// BSD 3-Clause License
//
// Copyright (c) 2019, "WebGPU native" developers
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
//    list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its
//    contributors may be used to endorse or promote products derived from
//    this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
unit WebGPU;
{ This unit is automatically generated by Chet:
   https://github.com/neslib/Chet }

{$MINENUMSIZE 4}

interface

uses Windows, SysUtils;

const
   INT8_MIN = (-128);
   INT16_MIN = (-32768);
   INT32_MIN = (-2147483647-1);
   INT64_MIN = (-9223372036854775807-1);
   INT8_MAX = 127;
   INT16_MAX = 32767;
   INT32_MAX = 2147483647;
   INT64_MAX = 9223372036854775807;
   UINT8_MAX = $ff;
   UINT16_MAX = $ffff;
   UINT32_MAX = $ffffffff;
   UINT64_MAX = $ffffffffffffffff;
   INT_LEAST8_MIN = INT8_MIN;
   INT_LEAST16_MIN = INT16_MIN;
   INT_LEAST32_MIN = INT32_MIN;
   INT_LEAST64_MIN = INT64_MIN;
   INT_LEAST8_MAX = INT8_MAX;
   INT_LEAST16_MAX = INT16_MAX;
   INT_LEAST32_MAX = INT32_MAX;
   INT_LEAST64_MAX = INT64_MAX;
   UINT_LEAST8_MAX = UINT8_MAX;
   UINT_LEAST16_MAX = UINT16_MAX;
   UINT_LEAST32_MAX = UINT32_MAX;
   UINT_LEAST64_MAX = UINT64_MAX;
   INT_FAST8_MIN = INT8_MIN;
   INT_FAST16_MIN = INT16_MIN;
   INT_FAST32_MIN = INT32_MIN;
   INT_FAST64_MIN = INT64_MIN;
   INT_FAST8_MAX = INT8_MAX;
   INT_FAST16_MAX = INT16_MAX;
   INT_FAST32_MAX = INT32_MAX;
   INT_FAST64_MAX = INT64_MAX;
   UINT_FAST8_MAX = UINT8_MAX;
   UINT_FAST16_MAX = UINT16_MAX;
   UINT_FAST32_MAX = UINT32_MAX;
   UINT_FAST64_MAX = UINT64_MAX;
   INTPTR_MIN = INT32_MIN;
   INTPTR_MAX = INT32_MAX;
   UINTPTR_MAX = UINT32_MAX;
   INTMAX_MIN = INT64_MIN;
   INTMAX_MAX = INT64_MAX;
   UINTMAX_MAX = UINT64_MAX;
   PTRDIFF_MIN = INT32_MIN;
   PTRDIFF_MAX = INT32_MAX;
   SIG_ATOMIC_MIN = INT32_MIN;
   SIG_ATOMIC_MAX = INT32_MAX;
   SIZE_MAX = UINT32_MAX;
   WCHAR_MIN = 0;
   WINT_MIN = 0;
   WGPU_ARRAY_LAYER_COUNT_UNDEFINED = UINT32_MAX;
   WGPU_COPY_STRIDE_UNDEFINED = UINT32_MAX;
   WGPU_DEPTH_CLEAR_VALUE_UNDEFINED = 1/0;
   WGPU_DEPTH_SLICE_UNDEFINED = UINT32_MAX;
   WGPU_LIMIT_U32_UNDEFINED = UINT32_MAX;
   WGPU_LIMIT_U64_UNDEFINED = UINT64_MAX;
   WGPU_MIP_LEVEL_COUNT_UNDEFINED = UINT32_MAX;
   WGPU_QUERY_SET_INDEX_UNDEFINED = UINT32_MAX;
   WGPU_STRLEN = SIZE_MAX;
   WGPU_WHOLE_MAP_SIZE = SIZE_MAX;
   WGPU_WHOLE_SIZE = UINT64_MAX;

type
   // Forward declarations
   PPUTF8Char = ^PUTF8Char;
   PUInt32 = ^UInt32;
   PUInt8 = ^UInt8;
   PUInt64 = ^UInt64;
   PWGPUAdapterImpl = Pointer;
   PPWGPUAdapterImpl = ^PWGPUAdapterImpl;
   PWGPUBindGroupImpl = Pointer;
   PPWGPUBindGroupImpl = ^PWGPUBindGroupImpl;
   PWGPUBindGroupLayoutImpl = Pointer;
   PPWGPUBindGroupLayoutImpl = ^PWGPUBindGroupLayoutImpl;
   PWGPUBufferImpl = Pointer;
   PPWGPUBufferImpl = ^PWGPUBufferImpl;
   PWGPUCommandBufferImpl = Pointer;
   PPWGPUCommandBufferImpl = ^PWGPUCommandBufferImpl;
   PWGPUCommandEncoderImpl = Pointer;
   PPWGPUCommandEncoderImpl = ^PWGPUCommandEncoderImpl;
   PWGPUComputePassEncoderImpl = Pointer;
   PPWGPUComputePassEncoderImpl = ^PWGPUComputePassEncoderImpl;
   PWGPUComputePipelineImpl = Pointer;
   PPWGPUComputePipelineImpl = ^PWGPUComputePipelineImpl;
   PWGPUDeviceImpl = Pointer;
   PPWGPUDeviceImpl = ^PWGPUDeviceImpl;
   PWGPUExternalTextureImpl = Pointer;
   PPWGPUExternalTextureImpl = ^PWGPUExternalTextureImpl;
   PWGPUInstanceImpl = Pointer;
   PPWGPUInstanceImpl = ^PWGPUInstanceImpl;
   PWGPUPipelineLayoutImpl = Pointer;
   PPWGPUPipelineLayoutImpl = ^PWGPUPipelineLayoutImpl;
   PWGPUQuerySetImpl = Pointer;
   PPWGPUQuerySetImpl = ^PWGPUQuerySetImpl;
   PWGPUQueueImpl = Pointer;
   PPWGPUQueueImpl = ^PWGPUQueueImpl;
   PWGPURenderBundleImpl = Pointer;
   PPWGPURenderBundleImpl = ^PWGPURenderBundleImpl;
   PWGPURenderBundleEncoderImpl = Pointer;
   PPWGPURenderBundleEncoderImpl = ^PWGPURenderBundleEncoderImpl;
   PWGPURenderPassEncoderImpl = Pointer;
   PPWGPURenderPassEncoderImpl = ^PWGPURenderPassEncoderImpl;
   PWGPURenderPipelineImpl = Pointer;
   PPWGPURenderPipelineImpl = ^PWGPURenderPipelineImpl;
   PWGPUSamplerImpl = Pointer;
   PPWGPUSamplerImpl = ^PWGPUSamplerImpl;
   PWGPUShaderModuleImpl = Pointer;
   PPWGPUShaderModuleImpl = ^PWGPUShaderModuleImpl;
   PWGPUSharedBufferMemoryImpl = Pointer;
   PPWGPUSharedBufferMemoryImpl = ^PWGPUSharedBufferMemoryImpl;
   PWGPUSharedFenceImpl = Pointer;
   PPWGPUSharedFenceImpl = ^PWGPUSharedFenceImpl;
   PWGPUSharedTextureMemoryImpl = Pointer;
   PPWGPUSharedTextureMemoryImpl = ^PWGPUSharedTextureMemoryImpl;
   PWGPUSurfaceImpl = Pointer;
   PPWGPUSurfaceImpl = ^PWGPUSurfaceImpl;
   PWGPUTextureImpl = Pointer;
   PPWGPUTextureImpl = ^PWGPUTextureImpl;
   PWGPUTextureViewImpl = Pointer;
   PPWGPUTextureViewImpl = ^PWGPUTextureViewImpl;
   PWGPUChainedStruct = ^TWGPUChainedStruct;
   PWGPUBufferMapCallbackInfo = ^TWGPUBufferMapCallbackInfo;
   PWGPUCompilationInfoCallbackInfo = ^TWGPUCompilationInfoCallbackInfo;
   PWGPUCreateComputePipelineAsyncCallbackInfo = ^TWGPUCreateComputePipelineAsyncCallbackInfo;
   PWGPUCreateRenderPipelineAsyncCallbackInfo = ^TWGPUCreateRenderPipelineAsyncCallbackInfo;
   PWGPUDeviceLostCallbackInfo = ^TWGPUDeviceLostCallbackInfo;
   PWGPULoggingCallbackInfo = ^TWGPULoggingCallbackInfo;
   PWGPUPopErrorScopeCallbackInfo = ^TWGPUPopErrorScopeCallbackInfo;
   PWGPUQueueWorkDoneCallbackInfo = ^TWGPUQueueWorkDoneCallbackInfo;
   PWGPURequestAdapterCallbackInfo = ^TWGPURequestAdapterCallbackInfo;
   PWGPURequestDeviceCallbackInfo = ^TWGPURequestDeviceCallbackInfo;
   PWGPUUncapturedErrorCallbackInfo = ^TWGPUUncapturedErrorCallbackInfo;
   PWGPUINTERNAL_HAVE_EMDAWNWEBGPU_HEADER = ^TWGPUINTERNAL_HAVE_EMDAWNWEBGPU_HEADER;
   PWGPUAdapterPropertiesD3D = ^TWGPUAdapterPropertiesD3D;
   PWGPUAdapterPropertiesSubgroups = ^TWGPUAdapterPropertiesSubgroups;
   PWGPUAdapterPropertiesVk = ^TWGPUAdapterPropertiesVk;
   PWGPUBlendComponent = ^TWGPUBlendComponent;
   PWGPUBufferBindingLayout = ^TWGPUBufferBindingLayout;
   PWGPUBufferHostMappedPointer = ^TWGPUBufferHostMappedPointer;
   PWGPUColor = ^TWGPUColor;
   PWGPUColorTargetStateExpandResolveTextureDawn = ^TWGPUColorTargetStateExpandResolveTextureDawn;
   PWGPUCopyTextureForBrowserOptions = ^TWGPUCopyTextureForBrowserOptions;
   PWGPUDawnWGSLBlocklist = ^TWGPUDawnWGSLBlocklist;
   PWGPUDawnAdapterPropertiesPowerPreference = ^TWGPUDawnAdapterPropertiesPowerPreference;
   PWGPUDawnBufferDescriptorErrorInfoFromWireClient = ^TWGPUDawnBufferDescriptorErrorInfoFromWireClient;
   PWGPUDawnCompilationMessageUtf16 = ^TWGPUDawnCompilationMessageUtf16;
   PWGPUDawnDeviceAllocatorControl = ^TWGPUDawnDeviceAllocatorControl;
   PWGPUDawnDrmFormatProperties = ^TWGPUDawnDrmFormatProperties;
   PWGPUDawnEncoderInternalUsageDescriptor = ^TWGPUDawnEncoderInternalUsageDescriptor;
   PWGPUDawnExperimentalImmediateDataLimits = ^TWGPUDawnExperimentalImmediateDataLimits;
   PWGPUDawnFakeBufferOOMForTesting = ^TWGPUDawnFakeBufferOOMForTesting;
   PWGPUDawnInjectedInvalidSType = ^TWGPUDawnInjectedInvalidSType;
   PWGPUDawnRenderPassColorAttachmentRenderToSingleSampled = ^TWGPUDawnRenderPassColorAttachmentRenderToSingleSampled;
   PWGPUDawnShaderModuleSPIRVOptionsDescriptor = ^TWGPUDawnShaderModuleSPIRVOptionsDescriptor;
   PWGPUDawnTexelCopyBufferRowAlignmentLimits = ^TWGPUDawnTexelCopyBufferRowAlignmentLimits;
   PWGPUDawnTextureInternalUsageDescriptor = ^TWGPUDawnTextureInternalUsageDescriptor;
   PWGPUDawnTogglesDescriptor = ^TWGPUDawnTogglesDescriptor;
   PWGPUDawnWireWGSLControl = ^TWGPUDawnWireWGSLControl;
   PWGPUExtent2D = ^TWGPUExtent2D;
   PWGPUExtent3D = ^TWGPUExtent3D;
   PWGPUExternalTextureBindingEntry = ^TWGPUExternalTextureBindingEntry;
   PWGPUExternalTextureBindingLayout = ^TWGPUExternalTextureBindingLayout;
   PWGPUFuture = ^TWGPUFuture;
   PWGPUInstanceCapabilities = ^TWGPUInstanceCapabilities;
   PWGPUMemoryHeapInfo = ^TWGPUMemoryHeapInfo;
   PWGPUMultisampleState = ^TWGPUMultisampleState;
   PWGPUOrigin2D = ^TWGPUOrigin2D;
   PWGPUOrigin3D = ^TWGPUOrigin3D;
   PWGPUPassTimestampWrites = ^TWGPUPassTimestampWrites;
   PWGPUPipelineLayoutStorageAttachment = ^TWGPUPipelineLayoutStorageAttachment;
   PWGPUPrimitiveState = ^TWGPUPrimitiveState;
   PWGPURenderPassDepthStencilAttachment = ^TWGPURenderPassDepthStencilAttachment;
   PWGPURenderPassDescriptorExpandResolveRect = ^TWGPURenderPassDescriptorExpandResolveRect;
   PWGPURenderPassMaxDrawCount = ^TWGPURenderPassMaxDrawCount;
   PWGPURequestAdapterWebXROptions = ^TWGPURequestAdapterWebXROptions;
   PWGPUSamplerBindingLayout = ^TWGPUSamplerBindingLayout;
   PWGPUShaderModuleCompilationOptions = ^TWGPUShaderModuleCompilationOptions;
   PWGPUShaderSourceSPIRV = ^TWGPUShaderSourceSPIRV;
   PWGPUSharedBufferMemoryBeginAccessDescriptor = ^TWGPUSharedBufferMemoryBeginAccessDescriptor;
   PWGPUSharedBufferMemoryEndAccessState = ^TWGPUSharedBufferMemoryEndAccessState;
   PWGPUSharedBufferMemoryProperties = ^TWGPUSharedBufferMemoryProperties;
   PWGPUSharedFenceDXGISharedHandleDescriptor = ^TWGPUSharedFenceDXGISharedHandleDescriptor;
   PWGPUSharedFenceDXGISharedHandleExportInfo = ^TWGPUSharedFenceDXGISharedHandleExportInfo;
   PWGPUSharedFenceEGLSyncDescriptor = ^TWGPUSharedFenceEGLSyncDescriptor;
   PWGPUSharedFenceEGLSyncExportInfo = ^TWGPUSharedFenceEGLSyncExportInfo;
   PWGPUSharedFenceMTLSharedEventDescriptor = ^TWGPUSharedFenceMTLSharedEventDescriptor;
   PWGPUSharedFenceMTLSharedEventExportInfo = ^TWGPUSharedFenceMTLSharedEventExportInfo;
   PWGPUSharedFenceSyncFDDescriptor = ^TWGPUSharedFenceSyncFDDescriptor;
   PWGPUSharedFenceSyncFDExportInfo = ^TWGPUSharedFenceSyncFDExportInfo;
   PWGPUSharedFenceVkSemaphoreOpaqueFDDescriptor = ^TWGPUSharedFenceVkSemaphoreOpaqueFDDescriptor;
   PWGPUSharedFenceVkSemaphoreOpaqueFDExportInfo = ^TWGPUSharedFenceVkSemaphoreOpaqueFDExportInfo;
   PWGPUSharedFenceVkSemaphoreZirconHandleDescriptor = ^TWGPUSharedFenceVkSemaphoreZirconHandleDescriptor;
   PWGPUSharedFenceVkSemaphoreZirconHandleExportInfo = ^TWGPUSharedFenceVkSemaphoreZirconHandleExportInfo;
   PWGPUSharedTextureMemoryD3DSwapchainBeginState = ^TWGPUSharedTextureMemoryD3DSwapchainBeginState;
   PWGPUSharedTextureMemoryDXGISharedHandleDescriptor = ^TWGPUSharedTextureMemoryDXGISharedHandleDescriptor;
   PWGPUSharedTextureMemoryEGLImageDescriptor = ^TWGPUSharedTextureMemoryEGLImageDescriptor;
   PWGPUSharedTextureMemoryIOSurfaceDescriptor = ^TWGPUSharedTextureMemoryIOSurfaceDescriptor;
   PWGPUSharedTextureMemoryAHardwareBufferDescriptor = ^TWGPUSharedTextureMemoryAHardwareBufferDescriptor;
   PWGPUSharedTextureMemoryDmaBufPlane = ^TWGPUSharedTextureMemoryDmaBufPlane;
   PWGPUSharedTextureMemoryOpaqueFDDescriptor = ^TWGPUSharedTextureMemoryOpaqueFDDescriptor;
   PWGPUSharedTextureMemoryVkDedicatedAllocationDescriptor = ^TWGPUSharedTextureMemoryVkDedicatedAllocationDescriptor;
   PWGPUSharedTextureMemoryVkImageLayoutBeginState = ^TWGPUSharedTextureMemoryVkImageLayoutBeginState;
   PWGPUSharedTextureMemoryVkImageLayoutEndState = ^TWGPUSharedTextureMemoryVkImageLayoutEndState;
   PWGPUSharedTextureMemoryZirconHandleDescriptor = ^TWGPUSharedTextureMemoryZirconHandleDescriptor;
   PWGPUStaticSamplerBindingLayout = ^TWGPUStaticSamplerBindingLayout;
   PWGPUStencilFaceState = ^TWGPUStencilFaceState;
   PWGPUStorageTextureBindingLayout = ^TWGPUStorageTextureBindingLayout;
   PWGPUStringView = ^TWGPUStringView;
   PWGPUSubgroupMatrixConfig = ^TWGPUSubgroupMatrixConfig;
   PWGPUSupportedWGSLLanguageFeatures = ^TWGPUSupportedWGSLLanguageFeatures;
   PWGPUSupportedFeatures = ^TWGPUSupportedFeatures;
   PWGPUSurfaceCapabilities = ^TWGPUSurfaceCapabilities;
   PWGPUSurfaceColorManagement = ^TWGPUSurfaceColorManagement;
   PWGPUSurfaceConfiguration = ^TWGPUSurfaceConfiguration;
   PWGPUSurfaceDescriptorFromWindowsUWPSwapChainPanel = ^TWGPUSurfaceDescriptorFromWindowsUWPSwapChainPanel;
   PWGPUSurfaceDescriptorFromWindowsWinUISwapChainPanel = ^TWGPUSurfaceDescriptorFromWindowsWinUISwapChainPanel;
   PWGPUSurfaceDescriptorFromWindowsCoreWindow = ^TWGPUSurfaceDescriptorFromWindowsCoreWindow;
   PWGPUSurfaceSourceXCBWindow = ^TWGPUSurfaceSourceXCBWindow;
   PWGPUSurfaceSourceAndroidNativeWindow = ^TWGPUSurfaceSourceAndroidNativeWindow;
   PWGPUSurfaceSourceMetalLayer = ^TWGPUSurfaceSourceMetalLayer;
   PWGPUSurfaceSourceWaylandSurface = ^TWGPUSurfaceSourceWaylandSurface;
   PWGPUSurfaceSourceWindowsHWND = ^TWGPUSurfaceSourceWindowsHWND;
   PWGPUSurfaceSourceXlibWindow = ^TWGPUSurfaceSourceXlibWindow;
   PWGPUSurfaceTexture = ^TWGPUSurfaceTexture;
   PWGPUTexelCopyBufferLayout = ^TWGPUTexelCopyBufferLayout;
   PWGPUTextureBindingLayout = ^TWGPUTextureBindingLayout;
   PWGPUTextureBindingViewDimensionDescriptor = ^TWGPUTextureBindingViewDimensionDescriptor;
   PWGPUVertexAttribute = ^TWGPUVertexAttribute;
   PWGPUYCbCrVkDescriptor = ^TWGPUYCbCrVkDescriptor;
   PWGPUAHardwareBufferProperties = ^TWGPUAHardwareBufferProperties;
   PWGPUAdapterPropertiesMemoryHeaps = ^TWGPUAdapterPropertiesMemoryHeaps;
   PWGPUAdapterPropertiesSubgroupMatrixConfigs = ^TWGPUAdapterPropertiesSubgroupMatrixConfigs;
   PWGPUBindGroupEntry = ^TWGPUBindGroupEntry;
   PWGPUBindGroupLayoutEntry = ^TWGPUBindGroupLayoutEntry;
   PWGPUBlendState = ^TWGPUBlendState;
   PWGPUBufferDescriptor = ^TWGPUBufferDescriptor;
   PWGPUCommandBufferDescriptor = ^TWGPUCommandBufferDescriptor;
   PWGPUCommandEncoderDescriptor = ^TWGPUCommandEncoderDescriptor;
   PWGPUCompilationMessage = ^TWGPUCompilationMessage;
   PWGPUComputePassDescriptor = ^TWGPUComputePassDescriptor;
   PWGPUConstantEntry = ^TWGPUConstantEntry;
   PWGPUDawnCacheDeviceDescriptor = ^TWGPUDawnCacheDeviceDescriptor;
   PWGPUDawnDrmFormatCapabilities = ^TWGPUDawnDrmFormatCapabilities;
   PWGPUDepthStencilState = ^TWGPUDepthStencilState;
   PWGPUEmscriptenSurfaceSourceCanvasHTMLSelector = ^TWGPUEmscriptenSurfaceSourceCanvasHTMLSelector;
   PWGPUExternalTextureDescriptor = ^TWGPUExternalTextureDescriptor;
   PWGPUFutureWaitInfo = ^TWGPUFutureWaitInfo;
   PWGPUImageCopyExternalTexture = ^TWGPUImageCopyExternalTexture;
   PWGPUInstanceDescriptor = ^TWGPUInstanceDescriptor;
   PWGPULimits = ^TWGPULimits;
   PWGPUPipelineLayoutPixelLocalStorage = ^TWGPUPipelineLayoutPixelLocalStorage;
   PWGPUQuerySetDescriptor = ^TWGPUQuerySetDescriptor;
   PWGPUQueueDescriptor = ^TWGPUQueueDescriptor;
   PWGPURenderBundleDescriptor = ^TWGPURenderBundleDescriptor;
   PWGPURenderBundleEncoderDescriptor = ^TWGPURenderBundleEncoderDescriptor;
   PWGPURenderPassColorAttachment = ^TWGPURenderPassColorAttachment;
   PWGPURenderPassStorageAttachment = ^TWGPURenderPassStorageAttachment;
   PWGPURequestAdapterOptions = ^TWGPURequestAdapterOptions;
   PWGPUSamplerDescriptor = ^TWGPUSamplerDescriptor;
   PWGPUShaderSourceWGSL = ^TWGPUShaderSourceWGSL;
   PWGPUSharedBufferMemoryDescriptor = ^TWGPUSharedBufferMemoryDescriptor;
   PWGPUSharedFenceDescriptor = ^TWGPUSharedFenceDescriptor;
   PWGPUSharedFenceExportInfo = ^TWGPUSharedFenceExportInfo;
   PWGPUSharedTextureMemoryAHardwareBufferProperties = ^TWGPUSharedTextureMemoryAHardwareBufferProperties;
   PWGPUSharedTextureMemoryBeginAccessDescriptor = ^TWGPUSharedTextureMemoryBeginAccessDescriptor;
   PWGPUSharedTextureMemoryDmaBufDescriptor = ^TWGPUSharedTextureMemoryDmaBufDescriptor;
   PWGPUSharedTextureMemoryEndAccessState = ^TWGPUSharedTextureMemoryEndAccessState;
   PWGPUTexelCopyBufferInfo = ^TWGPUTexelCopyBufferInfo;
   PWGPUTexelCopyTextureInfo = ^TWGPUTexelCopyTextureInfo;
   PWGPUTextureDescriptor = ^TWGPUTextureDescriptor;
   PWGPUTextureViewDescriptor = ^TWGPUTextureViewDescriptor;
   PWGPUVertexBufferLayout = ^TWGPUVertexBufferLayout;
   PWGPUAdapterInfo = ^TWGPUAdapterInfo;
   PWGPUBindGroupDescriptor = ^TWGPUBindGroupDescriptor;
   PWGPUBindGroupLayoutDescriptor = ^TWGPUBindGroupLayoutDescriptor;
   PWGPUColorTargetState = ^TWGPUColorTargetState;
   PWGPUCompilationInfo = ^TWGPUCompilationInfo;
   PWGPUComputeState = ^TWGPUComputeState;
   PWGPUDawnFormatCapabilities = ^TWGPUDawnFormatCapabilities;
   PWGPUDeviceDescriptor = ^TWGPUDeviceDescriptor;
   PWGPUPipelineLayoutDescriptor = ^TWGPUPipelineLayoutDescriptor;
   PWGPURenderPassPixelLocalStorage = ^TWGPURenderPassPixelLocalStorage;
   PWGPUShaderModuleDescriptor = ^TWGPUShaderModuleDescriptor;
   PWGPUSharedTextureMemoryDescriptor = ^TWGPUSharedTextureMemoryDescriptor;
   PWGPUSharedTextureMemoryProperties = ^TWGPUSharedTextureMemoryProperties;
   PWGPUSurfaceDescriptor = ^TWGPUSurfaceDescriptor;
   PWGPUVertexState = ^TWGPUVertexState;
   PWGPUComputePipelineDescriptor = ^TWGPUComputePipelineDescriptor;
   PWGPUFragmentState = ^TWGPUFragmentState;
   PWGPURenderPassDescriptor = ^TWGPURenderPassDescriptor;
   PWGPURenderPipelineDescriptor = ^TWGPURenderPipelineDescriptor;

   ptrdiff_t = Int64;
   size_t = UInt64;
   wchar_t = Word;
   wint_t = Word;
   int8_t = UTF8Char;
   uint8_t = Byte;
   Puint8_t = ^uint8_t;
   int16_t = Smallint;
   uint16_t = Word;
   int32_t = Integer;
   uint32_t = Cardinal;
   Puint32_t = ^uint32_t;
   int64_t = Int64;
   uint64_t = UInt64;
   Puint64_t = ^uint64_t;
   int_least8_t = UTF8Char;
   uint_least8_t = Byte;
   int_least16_t = Smallint;
   uint_least16_t = Word;
   int_least32_t = Integer;
   uint_least32_t = Cardinal;
   int_least64_t = Int64;
   uint_least64_t = UInt64;
   int_fast8_t = UTF8Char;
   uint_fast8_t = Byte;
   int_fast16_t = Smallint;
   uint_fast16_t = Word;
   int_fast32_t = Integer;
   uint_fast32_t = Cardinal;
   int_fast64_t = Int64;
   uint_fast64_t = UInt64;
   intptr_t = Integer;
   uintptr_t = Cardinal;
   intmax_t = Int64;
   uintmax_t = UInt64;
   TWGPUFlags = UInt64;
   TWGPUBool = UInt32;
   TWGPUAdapter = UIntPtr;
   PWGPUAdapter = ^TWGPUAdapter;
   TWGPUBindGroup = UIntPtr;
   PWGPUBindGroup = ^TWGPUBindGroup;
   TWGPUBindGroupLayout = UIntPtr;
   PWGPUBindGroupLayout = ^TWGPUBindGroupLayout;
   TWGPUBuffer = UIntPtr;
   PWGPUBuffer = ^TWGPUBuffer;
   TWGPUCommandBuffer = UIntPtr;
   PWGPUCommandBuffer = ^TWGPUCommandBuffer;
   TWGPUCommandEncoder = UIntPtr;
   PWGPUCommandEncoder = ^TWGPUCommandEncoder;
   TWGPUComputePassEncoder = UIntPtr;
   PWGPUComputePassEncoder = ^TWGPUComputePassEncoder;
   TWGPUComputePipeline = UIntPtr;
   PWGPUComputePipeline = ^TWGPUComputePipeline;
   TWGPUDevice = UIntPtr;
   PWGPUDevice = ^TWGPUDevice;
   TWGPUExternalTexture = UIntPtr;
   PWGPUExternalTexture = ^TWGPUExternalTexture;
   TWGPUInstance = UIntPtr;
   PWGPUInstance = ^TWGPUInstance;
   TWGPUPipelineLayout = UIntPtr;
   PWGPUPipelineLayout = ^TWGPUPipelineLayout;
   TWGPUQuerySet = UIntPtr;
   PWGPUQuerySet = ^TWGPUQuerySet;
   TWGPUQueue = UIntPtr;
   PWGPUQueue = ^TWGPUQueue;
   TWGPURenderBundle = UIntPtr;
   PWGPURenderBundle = ^TWGPURenderBundle;
   TWGPURenderBundleEncoder = UIntPtr;
   PWGPURenderBundleEncoder = ^TWGPURenderBundleEncoder;
   TWGPURenderPassEncoder = UIntPtr;
   PWGPURenderPassEncoder = ^TWGPURenderPassEncoder;
   TWGPURenderPipeline = UIntPtr;
   PWGPURenderPipeline = ^TWGPURenderPipeline;
   TWGPUSampler = UIntPtr;
   PWGPUSampler = ^TWGPUSampler;
   TWGPUShaderModule = UIntPtr;
   PWGPUShaderModule = ^TWGPUShaderModule;
   TWGPUSharedBufferMemory = UIntPtr;
   PWGPUSharedBufferMemory = ^TWGPUSharedBufferMemory;
   TWGPUSharedFence = UIntPtr;
   PWGPUSharedFence = ^TWGPUSharedFence;
   TWGPUSharedTextureMemory = UIntPtr;
   PWGPUSharedTextureMemory = ^TWGPUSharedTextureMemory;
   TWGPUSurface = UIntPtr;
   PWGPUSurface = ^TWGPUSurface;
   TWGPUTexture = UIntPtr;
   PWGPUTexture = ^TWGPUTexture;
   TWGPUTextureView = UIntPtr;
   PWGPUTextureView = ^TWGPUTextureView;

   TWGPUWGSLLanguageFeatureName = (
      WGPUWGSLLanguageFeatureName_ReadonlyAndReadwriteStorageTextures = 1,
      WGPUWGSLLanguageFeatureName_Packed4x8IntegerDotProduct = 2,
      WGPUWGSLLanguageFeatureName_UnrestrictedPointerParameters = 3,
      WGPUWGSLLanguageFeatureName_PointerCompositeAccess = 4,
      WGPUWGSLLanguageFeatureName_SizedBindingArray = 5,
      WGPUWGSLLanguageFeatureName_ChromiumTestingUnimplemented = 327680,
      WGPUWGSLLanguageFeatureName_ChromiumTestingUnsafeExperimental = 327681,
      WGPUWGSLLanguageFeatureName_ChromiumTestingExperimental = 327682,
      WGPUWGSLLanguageFeatureName_ChromiumTestingShippedWithKillswitch = 327683,
      WGPUWGSLLanguageFeatureName_ChromiumTestingShipped = 327684,
      WGPUWGSLLanguageFeatureName_Force32 = 2147483647);
   PWGPUWGSLLanguageFeatureName = ^TWGPUWGSLLanguageFeatureName;

   TWGPUAdapterType = (
      WGPUAdapterType_DiscreteGPU = 1,
      WGPUAdapterType_IntegratedGPU = 2,
      WGPUAdapterType_CPU = 3,
      WGPUAdapterType_Unknown = 4,
      WGPUAdapterType_Force32 = 2147483647);
   PWGPUAdapterType = ^TWGPUAdapterType;

   TWGPUAddressMode = (
      WGPUAddressMode_Undefined = 0,
      WGPUAddressMode_ClampToEdge = 1,
      WGPUAddressMode_Repeat = 2,
      WGPUAddressMode_MirrorRepeat = 3,
      WGPUAddressMode_Force32 = 2147483647);
   PWGPUAddressMode = ^TWGPUAddressMode;

   TWGPUAlphaMode = (
      WGPUAlphaMode_Opaque = 1,
      WGPUAlphaMode_Premultiplied = 2,
      WGPUAlphaMode_Unpremultiplied = 3,
      WGPUAlphaMode_Force32 = 2147483647);
   PWGPUAlphaMode = ^TWGPUAlphaMode;

   TWGPUBackendType = (
      WGPUBackendType_Undefined = 0,
      WGPUBackendType_Null = 1,
      WGPUBackendType_WebGPU = 2,
      WGPUBackendType_D3D11 = 3,
      WGPUBackendType_D3D12 = 4,
      WGPUBackendType_Metal = 5,
      WGPUBackendType_Vulkan = 6,
      WGPUBackendType_OpenGL = 7,
      WGPUBackendType_OpenGLES = 8,
      WGPUBackendType_Force32 = 2147483647);
   PWGPUBackendType = ^TWGPUBackendType;

   TWGPUBlendFactor = (
      WGPUBlendFactor_Undefined = 0,
      WGPUBlendFactor_Zero = 1,
      WGPUBlendFactor_One = 2,
      WGPUBlendFactor_Src = 3,
      WGPUBlendFactor_OneMinusSrc = 4,
      WGPUBlendFactor_SrcAlpha = 5,
      WGPUBlendFactor_OneMinusSrcAlpha = 6,
      WGPUBlendFactor_Dst = 7,
      WGPUBlendFactor_OneMinusDst = 8,
      WGPUBlendFactor_DstAlpha = 9,
      WGPUBlendFactor_OneMinusDstAlpha = 10,
      WGPUBlendFactor_SrcAlphaSaturated = 11,
      WGPUBlendFactor_Constant = 12,
      WGPUBlendFactor_OneMinusConstant = 13,
      WGPUBlendFactor_Src1 = 14,
      WGPUBlendFactor_OneMinusSrc1 = 15,
      WGPUBlendFactor_Src1Alpha = 16,
      WGPUBlendFactor_OneMinusSrc1Alpha = 17,
      WGPUBlendFactor_Force32 = 2147483647);
   PWGPUBlendFactor = ^TWGPUBlendFactor;

   TWGPUBlendOperation = (
      WGPUBlendOperation_Undefined = 0,
      WGPUBlendOperation_Add = 1,
      WGPUBlendOperation_Subtract = 2,
      WGPUBlendOperation_ReverseSubtract = 3,
      WGPUBlendOperation_Min = 4,
      WGPUBlendOperation_Max = 5,
      WGPUBlendOperation_Force32 = 2147483647);
   PWGPUBlendOperation = ^TWGPUBlendOperation;

   TWGPUBufferBindingType = (
      WGPUBufferBindingType_BindingNotUsed = 0,
      WGPUBufferBindingType_Undefined = 1,
      WGPUBufferBindingType_Uniform = 2,
      WGPUBufferBindingType_Storage = 3,
      WGPUBufferBindingType_ReadOnlyStorage = 4,
      WGPUBufferBindingType_Force32 = 2147483647);
   PWGPUBufferBindingType = ^TWGPUBufferBindingType;

   TWGPUBufferMapState = (
      WGPUBufferMapState_Unmapped = 1,
      WGPUBufferMapState_Pending = 2,
      WGPUBufferMapState_Mapped = 3,
      WGPUBufferMapState_Force32 = 2147483647);
   PWGPUBufferMapState = ^TWGPUBufferMapState;

   TWGPUCallbackMode = (
      WGPUCallbackMode_WaitAnyOnly = 1,
      WGPUCallbackMode_AllowProcessEvents = 2,
      WGPUCallbackMode_AllowSpontaneous = 3,
      WGPUCallbackMode_Force32 = 2147483647);
   PWGPUCallbackMode = ^TWGPUCallbackMode;

   TWGPUCompareFunction = (
      WGPUCompareFunction_Undefined = 0,
      WGPUCompareFunction_Never = 1,
      WGPUCompareFunction_Less = 2,
      WGPUCompareFunction_Equal = 3,
      WGPUCompareFunction_LessEqual = 4,
      WGPUCompareFunction_Greater = 5,
      WGPUCompareFunction_NotEqual = 6,
      WGPUCompareFunction_GreaterEqual = 7,
      WGPUCompareFunction_Always = 8,
      WGPUCompareFunction_Force32 = 2147483647);
   PWGPUCompareFunction = ^TWGPUCompareFunction;

   TWGPUCompilationInfoRequestStatus = (
      WGPUCompilationInfoRequestStatus_Success = 1,
      WGPUCompilationInfoRequestStatus_CallbackCancelled = 2,
      WGPUCompilationInfoRequestStatus_Force32 = 2147483647);
   PWGPUCompilationInfoRequestStatus = ^TWGPUCompilationInfoRequestStatus;

   TWGPUCompilationMessageType = (
      WGPUCompilationMessageType_Error = 1,
      WGPUCompilationMessageType_Warning = 2,
      WGPUCompilationMessageType_Info = 3,
      WGPUCompilationMessageType_Force32 = 2147483647);
   PWGPUCompilationMessageType = ^TWGPUCompilationMessageType;

   TWGPUCompositeAlphaMode = (
      WGPUCompositeAlphaMode_Auto = 0,
      WGPUCompositeAlphaMode_Opaque = 1,
      WGPUCompositeAlphaMode_Premultiplied = 2,
      WGPUCompositeAlphaMode_Unpremultiplied = 3,
      WGPUCompositeAlphaMode_Inherit = 4,
      WGPUCompositeAlphaMode_Force32 = 2147483647);
   PWGPUCompositeAlphaMode = ^TWGPUCompositeAlphaMode;

   TWGPUCreatePipelineAsyncStatus = (
      WGPUCreatePipelineAsyncStatus_Success = 1,
      WGPUCreatePipelineAsyncStatus_CallbackCancelled = 2,
      WGPUCreatePipelineAsyncStatus_ValidationError = 3,
      WGPUCreatePipelineAsyncStatus_InternalError = 4,
      WGPUCreatePipelineAsyncStatus_Force32 = 2147483647);
   PWGPUCreatePipelineAsyncStatus = ^TWGPUCreatePipelineAsyncStatus;

   TWGPUCullMode = (
      WGPUCullMode_Undefined = 0,
      WGPUCullMode_None = 1,
      WGPUCullMode_Front = 2,
      WGPUCullMode_Back = 3,
      WGPUCullMode_Force32 = 2147483647);
   PWGPUCullMode = ^TWGPUCullMode;

   TWGPUDeviceLostReason = (
      WGPUDeviceLostReason_Unknown = 1,
      WGPUDeviceLostReason_Destroyed = 2,
      WGPUDeviceLostReason_CallbackCancelled = 3,
      WGPUDeviceLostReason_FailedCreation = 4,
      WGPUDeviceLostReason_Force32 = 2147483647);
   PWGPUDeviceLostReason = ^TWGPUDeviceLostReason;

   TWGPUErrorFilter = (
      WGPUErrorFilter_Validation = 1,
      WGPUErrorFilter_OutOfMemory = 2,
      WGPUErrorFilter_Internal = 3,
      WGPUErrorFilter_Force32 = 2147483647);
   PWGPUErrorFilter = ^TWGPUErrorFilter;

   TWGPUErrorType = (
      WGPUErrorType_NoError = 1,
      WGPUErrorType_Validation = 2,
      WGPUErrorType_OutOfMemory = 3,
      WGPUErrorType_Internal = 4,
      WGPUErrorType_Unknown = 5,
      WGPUErrorType_Force32 = 2147483647);
   PWGPUErrorType = ^TWGPUErrorType;

   TWGPUExternalTextureRotation = (
      WGPUExternalTextureRotation_Rotate0Degrees = 1,
      WGPUExternalTextureRotation_Rotate90Degrees = 2,
      WGPUExternalTextureRotation_Rotate180Degrees = 3,
      WGPUExternalTextureRotation_Rotate270Degrees = 4,
      WGPUExternalTextureRotation_Force32 = 2147483647);
   PWGPUExternalTextureRotation = ^TWGPUExternalTextureRotation;

   TWGPUFeatureLevel = (
      WGPUFeatureLevel_Undefined = 0,
      WGPUFeatureLevel_Compatibility = 1,
      WGPUFeatureLevel_Core = 2,
      WGPUFeatureLevel_Force32 = 2147483647);
   PWGPUFeatureLevel = ^TWGPUFeatureLevel;

   TWGPUFeatureName = (
      WGPUFeatureName_DepthClipControl = 1,
      WGPUFeatureName_Depth32FloatStencil8 = 2,
      WGPUFeatureName_TimestampQuery = 3,
      WGPUFeatureName_TextureCompressionBC = 4,
      WGPUFeatureName_TextureCompressionBCSliced3D = 5,
      WGPUFeatureName_TextureCompressionETC2 = 6,
      WGPUFeatureName_TextureCompressionASTC = 7,
      WGPUFeatureName_TextureCompressionASTCSliced3D = 8,
      WGPUFeatureName_IndirectFirstInstance = 9,
      WGPUFeatureName_ShaderF16 = 10,
      WGPUFeatureName_RG11B10UfloatRenderable = 11,
      WGPUFeatureName_BGRA8UnormStorage = 12,
      WGPUFeatureName_Float32Filterable = 13,
      WGPUFeatureName_Float32Blendable = 14,
      WGPUFeatureName_ClipDistances = 15,
      WGPUFeatureName_DualSourceBlending = 16,
      WGPUFeatureName_Subgroups = 17,
      WGPUFeatureName_CoreFeaturesAndLimits = 18,
      WGPUFeatureName_DawnInternalUsages = 327680,
      WGPUFeatureName_DawnMultiPlanarFormats = 327681,
      WGPUFeatureName_DawnNative = 327682,
      WGPUFeatureName_ChromiumExperimentalTimestampQueryInsidePasses = 327683,
      WGPUFeatureName_ImplicitDeviceSynchronization = 327684,
      WGPUFeatureName_ChromiumExperimentalImmediateData = 327685,
      WGPUFeatureName_TransientAttachments = 327686,
      WGPUFeatureName_MSAARenderToSingleSampled = 327687,
      WGPUFeatureName_D3D11MultithreadProtected = 327688,
      WGPUFeatureName_ANGLETextureSharing = 327689,
      WGPUFeatureName_PixelLocalStorageCoherent = 327690,
      WGPUFeatureName_PixelLocalStorageNonCoherent = 327691,
      WGPUFeatureName_Unorm16TextureFormats = 327692,
      WGPUFeatureName_Snorm16TextureFormats = 327693,
      WGPUFeatureName_MultiPlanarFormatExtendedUsages = 327694,
      WGPUFeatureName_MultiPlanarFormatP010 = 327695,
      WGPUFeatureName_HostMappedPointer = 327696,
      WGPUFeatureName_MultiPlanarRenderTargets = 327697,
      WGPUFeatureName_MultiPlanarFormatNv12a = 327698,
      WGPUFeatureName_FramebufferFetch = 327699,
      WGPUFeatureName_BufferMapExtendedUsages = 327700,
      WGPUFeatureName_AdapterPropertiesMemoryHeaps = 327701,
      WGPUFeatureName_AdapterPropertiesD3D = 327702,
      WGPUFeatureName_AdapterPropertiesVk = 327703,
      WGPUFeatureName_R8UnormStorage = 327704,
      WGPUFeatureName_DawnFormatCapabilities = 327705,
      WGPUFeatureName_DawnDrmFormatCapabilities = 327706,
      WGPUFeatureName_Norm16TextureFormats = 327707,
      WGPUFeatureName_MultiPlanarFormatNv16 = 327708,
      WGPUFeatureName_MultiPlanarFormatNv24 = 327709,
      WGPUFeatureName_MultiPlanarFormatP210 = 327710,
      WGPUFeatureName_MultiPlanarFormatP410 = 327711,
      WGPUFeatureName_SharedTextureMemoryVkDedicatedAllocation = 327712,
      WGPUFeatureName_SharedTextureMemoryAHardwareBuffer = 327713,
      WGPUFeatureName_SharedTextureMemoryDmaBuf = 327714,
      WGPUFeatureName_SharedTextureMemoryOpaqueFD = 327715,
      WGPUFeatureName_SharedTextureMemoryZirconHandle = 327716,
      WGPUFeatureName_SharedTextureMemoryDXGISharedHandle = 327717,
      WGPUFeatureName_SharedTextureMemoryD3D11Texture2D = 327718,
      WGPUFeatureName_SharedTextureMemoryIOSurface = 327719,
      WGPUFeatureName_SharedTextureMemoryEGLImage = 327720,
      WGPUFeatureName_SharedFenceVkSemaphoreOpaqueFD = 327721,
      WGPUFeatureName_SharedFenceSyncFD = 327722,
      WGPUFeatureName_SharedFenceVkSemaphoreZirconHandle = 327723,
      WGPUFeatureName_SharedFenceDXGISharedHandle = 327724,
      WGPUFeatureName_SharedFenceMTLSharedEvent = 327725,
      WGPUFeatureName_SharedBufferMemoryD3D12Resource = 327726,
      WGPUFeatureName_StaticSamplers = 327727,
      WGPUFeatureName_YCbCrVulkanSamplers = 327728,
      WGPUFeatureName_ShaderModuleCompilationOptions = 327729,
      WGPUFeatureName_DawnLoadResolveTexture = 327730,
      WGPUFeatureName_DawnPartialLoadResolveTexture = 327731,
      WGPUFeatureName_MultiDrawIndirect = 327732,
      WGPUFeatureName_DawnTexelCopyBufferRowAlignment = 327733,
      WGPUFeatureName_FlexibleTextureViews = 327734,
      WGPUFeatureName_ChromiumExperimentalSubgroupMatrix = 327735,
      WGPUFeatureName_SharedFenceEGLSync = 327736,
      WGPUFeatureName_DawnDeviceAllocatorControl = 327737,
      WGPUFeatureName_Force32 = 2147483647);
   PWGPUFeatureName = ^TWGPUFeatureName;

   TWGPUFilterMode = (
      WGPUFilterMode_Undefined = 0,
      WGPUFilterMode_Nearest = 1,
      WGPUFilterMode_Linear = 2,
      WGPUFilterMode_Force32 = 2147483647);
   PWGPUFilterMode = ^TWGPUFilterMode;

   TWGPUFrontFace = (
      WGPUFrontFace_Undefined = 0,
      WGPUFrontFace_CCW = 1,
      WGPUFrontFace_CW = 2,
      WGPUFrontFace_Force32 = 2147483647);
   PWGPUFrontFace = ^TWGPUFrontFace;

   TWGPUIndexFormat = (
      WGPUIndexFormat_Undefined = 0,
      WGPUIndexFormat_Uint16 = 1,
      WGPUIndexFormat_Uint32 = 2,
      WGPUIndexFormat_Force32 = 2147483647);
   PWGPUIndexFormat = ^TWGPUIndexFormat;

   TWGPULoadOp = (
      WGPULoadOp_Undefined = 0,
      WGPULoadOp_Load = 1,
      WGPULoadOp_Clear = 2,
      WGPULoadOp_ExpandResolveTexture = 327683,
      WGPULoadOp_Force32 = 2147483647);
   PWGPULoadOp = ^TWGPULoadOp;

   TWGPULoggingType = (
      WGPULoggingType_Verbose = 1,
      WGPULoggingType_Info = 2,
      WGPULoggingType_Warning = 3,
      WGPULoggingType_Error = 4,
      WGPULoggingType_Force32 = 2147483647);
   PWGPULoggingType = ^TWGPULoggingType;

   TWGPUMapAsyncStatus = (
      WGPUMapAsyncStatus_Success = 1,
      WGPUMapAsyncStatus_CallbackCancelled = 2,
      WGPUMapAsyncStatus_Error = 3,
      WGPUMapAsyncStatus_Aborted = 4,
      WGPUMapAsyncStatus_Force32 = 2147483647);
   PWGPUMapAsyncStatus = ^TWGPUMapAsyncStatus;

   TWGPUMipmapFilterMode = (
      WGPUMipmapFilterMode_Undefined = 0,
      WGPUMipmapFilterMode_Nearest = 1,
      WGPUMipmapFilterMode_Linear = 2,
      WGPUMipmapFilterMode_Force32 = 2147483647);
   PWGPUMipmapFilterMode = ^TWGPUMipmapFilterMode;

   TWGPUOptionalBool = (
      WGPUOptionalBool_False = 0,
      WGPUOptionalBool_True = 1,
      WGPUOptionalBool_Undefined = 2,
      WGPUOptionalBool_Force32 = 2147483647);
   PWGPUOptionalBool = ^TWGPUOptionalBool;

   TWGPUPopErrorScopeStatus = (
      WGPUPopErrorScopeStatus_Success = 1,
      WGPUPopErrorScopeStatus_CallbackCancelled = 2,
      WGPUPopErrorScopeStatus_Error = 3,
      WGPUPopErrorScopeStatus_Force32 = 2147483647);
   PWGPUPopErrorScopeStatus = ^TWGPUPopErrorScopeStatus;

   TWGPUPowerPreference = (
      WGPUPowerPreference_Undefined = 0,
      WGPUPowerPreference_LowPower = 1,
      WGPUPowerPreference_HighPerformance = 2,
      WGPUPowerPreference_Force32 = 2147483647);
   PWGPUPowerPreference = ^TWGPUPowerPreference;

   TWGPUPredefinedColorSpace = (
      WGPUPredefinedColorSpace_SRGB = 1,
      WGPUPredefinedColorSpace_DisplayP3 = 2,
      WGPUPredefinedColorSpace_Force32 = 2147483647);
   PWGPUPredefinedColorSpace = ^TWGPUPredefinedColorSpace;

   TWGPUPresentMode = (
      WGPUPresentMode_Undefined = 0,
      WGPUPresentMode_Fifo = 1,
      WGPUPresentMode_FifoRelaxed = 2,
      WGPUPresentMode_Immediate = 3,
      WGPUPresentMode_Mailbox = 4,
      WGPUPresentMode_Force32 = 2147483647);
   PWGPUPresentMode = ^TWGPUPresentMode;

   TWGPUPrimitiveTopology = (
      WGPUPrimitiveTopology_Undefined = 0,
      WGPUPrimitiveTopology_PointList = 1,
      WGPUPrimitiveTopology_LineList = 2,
      WGPUPrimitiveTopology_LineStrip = 3,
      WGPUPrimitiveTopology_TriangleList = 4,
      WGPUPrimitiveTopology_TriangleStrip = 5,
      WGPUPrimitiveTopology_Force32 = 2147483647);
   PWGPUPrimitiveTopology = ^TWGPUPrimitiveTopology;

   TWGPUQueryType = (
      WGPUQueryType_Occlusion = 1,
      WGPUQueryType_Timestamp = 2,
      WGPUQueryType_Force32 = 2147483647);
   PWGPUQueryType = ^TWGPUQueryType;

   TWGPUQueueWorkDoneStatus = (
      WGPUQueueWorkDoneStatus_Success = 1,
      WGPUQueueWorkDoneStatus_CallbackCancelled = 2,
      WGPUQueueWorkDoneStatus_Error = 3,
      WGPUQueueWorkDoneStatus_Force32 = 2147483647);
   PWGPUQueueWorkDoneStatus = ^TWGPUQueueWorkDoneStatus;

   TWGPURequestAdapterStatus = (
      WGPURequestAdapterStatus_Success = 1,
      WGPURequestAdapterStatus_CallbackCancelled = 2,
      WGPURequestAdapterStatus_Unavailable = 3,
      WGPURequestAdapterStatus_Error = 4,
      WGPURequestAdapterStatus_Force32 = 2147483647);
   PWGPURequestAdapterStatus = ^TWGPURequestAdapterStatus;

   TWGPURequestDeviceStatus = (
      WGPURequestDeviceStatus_Success = 1,
      WGPURequestDeviceStatus_CallbackCancelled = 2,
      WGPURequestDeviceStatus_Error = 3,
      WGPURequestDeviceStatus_Force32 = 2147483647);
   PWGPURequestDeviceStatus = ^TWGPURequestDeviceStatus;

   TWGPUSType = (
      WGPUSType_ShaderSourceSPIRV = 1,
      WGPUSType_ShaderSourceWGSL = 2,
      WGPUSType_RenderPassMaxDrawCount = 3,
      WGPUSType_SurfaceSourceMetalLayer = 4,
      WGPUSType_SurfaceSourceWindowsHWND = 5,
      WGPUSType_SurfaceSourceXlibWindow = 6,
      WGPUSType_SurfaceSourceWaylandSurface = 7,
      WGPUSType_SurfaceSourceAndroidNativeWindow = 8,
      WGPUSType_SurfaceSourceXCBWindow = 9,
      WGPUSType_SurfaceColorManagement = 10,
      WGPUSType_RequestAdapterWebXROptions = 11,
      WGPUSType_AdapterPropertiesSubgroups = 12,
      WGPUSType_TextureBindingViewDimensionDescriptor = 131072,
      WGPUSType_EmscriptenSurfaceSourceCanvasHTMLSelector = 262144,
      WGPUSType_SurfaceDescriptorFromWindowsCoreWindow = 327680,
      WGPUSType_ExternalTextureBindingEntry = 327681,
      WGPUSType_ExternalTextureBindingLayout = 327682,
      WGPUSType_SurfaceDescriptorFromWindowsUWPSwapChainPanel = 327683,
      WGPUSType_DawnTextureInternalUsageDescriptor = 327684,
      WGPUSType_DawnEncoderInternalUsageDescriptor = 327685,
      WGPUSType_DawnInstanceDescriptor = 327686,
      WGPUSType_DawnCacheDeviceDescriptor = 327687,
      WGPUSType_DawnAdapterPropertiesPowerPreference = 327688,
      WGPUSType_DawnBufferDescriptorErrorInfoFromWireClient = 327689,
      WGPUSType_DawnTogglesDescriptor = 327690,
      WGPUSType_DawnShaderModuleSPIRVOptionsDescriptor = 327691,
      WGPUSType_RequestAdapterOptionsLUID = 327692,
      WGPUSType_RequestAdapterOptionsGetGLProc = 327693,
      WGPUSType_RequestAdapterOptionsD3D11Device = 327694,
      WGPUSType_DawnRenderPassColorAttachmentRenderToSingleSampled = 327695,
      WGPUSType_RenderPassPixelLocalStorage = 327696,
      WGPUSType_PipelineLayoutPixelLocalStorage = 327697,
      WGPUSType_BufferHostMappedPointer = 327698,
      WGPUSType_AdapterPropertiesMemoryHeaps = 327699,
      WGPUSType_AdapterPropertiesD3D = 327700,
      WGPUSType_AdapterPropertiesVk = 327701,
      WGPUSType_DawnWireWGSLControl = 327702,
      WGPUSType_DawnWGSLBlocklist = 327703,
      WGPUSType_DawnDrmFormatCapabilities = 327704,
      WGPUSType_ShaderModuleCompilationOptions = 327705,
      WGPUSType_ColorTargetStateExpandResolveTextureDawn = 327706,
      WGPUSType_RenderPassDescriptorExpandResolveRect = 327707,
      WGPUSType_SharedTextureMemoryVkDedicatedAllocationDescriptor = 327708,
      WGPUSType_SharedTextureMemoryAHardwareBufferDescriptor = 327709,
      WGPUSType_SharedTextureMemoryDmaBufDescriptor = 327710,
      WGPUSType_SharedTextureMemoryOpaqueFDDescriptor = 327711,
      WGPUSType_SharedTextureMemoryZirconHandleDescriptor = 327712,
      WGPUSType_SharedTextureMemoryDXGISharedHandleDescriptor = 327713,
      WGPUSType_SharedTextureMemoryD3D11Texture2DDescriptor = 327714,
      WGPUSType_SharedTextureMemoryIOSurfaceDescriptor = 327715,
      WGPUSType_SharedTextureMemoryEGLImageDescriptor = 327716,
      WGPUSType_SharedTextureMemoryInitializedBeginState = 327717,
      WGPUSType_SharedTextureMemoryInitializedEndState = 327718,
      WGPUSType_SharedTextureMemoryVkImageLayoutBeginState = 327719,
      WGPUSType_SharedTextureMemoryVkImageLayoutEndState = 327720,
      WGPUSType_SharedTextureMemoryD3DSwapchainBeginState = 327721,
      WGPUSType_SharedFenceVkSemaphoreOpaqueFDDescriptor = 327722,
      WGPUSType_SharedFenceVkSemaphoreOpaqueFDExportInfo = 327723,
      WGPUSType_SharedFenceSyncFDDescriptor = 327724,
      WGPUSType_SharedFenceSyncFDExportInfo = 327725,
      WGPUSType_SharedFenceVkSemaphoreZirconHandleDescriptor = 327726,
      WGPUSType_SharedFenceVkSemaphoreZirconHandleExportInfo = 327727,
      WGPUSType_SharedFenceDXGISharedHandleDescriptor = 327728,
      WGPUSType_SharedFenceDXGISharedHandleExportInfo = 327729,
      WGPUSType_SharedFenceMTLSharedEventDescriptor = 327730,
      WGPUSType_SharedFenceMTLSharedEventExportInfo = 327731,
      WGPUSType_SharedBufferMemoryD3D12ResourceDescriptor = 327732,
      WGPUSType_StaticSamplerBindingLayout = 327733,
      WGPUSType_YCbCrVkDescriptor = 327734,
      WGPUSType_SharedTextureMemoryAHardwareBufferProperties = 327735,
      WGPUSType_AHardwareBufferProperties = 327736,
      WGPUSType_DawnExperimentalImmediateDataLimits = 327737,
      WGPUSType_DawnTexelCopyBufferRowAlignmentLimits = 327738,
      WGPUSType_AdapterPropertiesSubgroupMatrixConfigs = 327739,
      WGPUSType_SharedFenceEGLSyncDescriptor = 327740,
      WGPUSType_SharedFenceEGLSyncExportInfo = 327741,
      WGPUSType_DawnInjectedInvalidSType = 327742,
      WGPUSType_DawnCompilationMessageUtf16 = 327743,
      WGPUSType_DawnFakeBufferOOMForTesting = 327744,
      WGPUSType_SurfaceDescriptorFromWindowsWinUISwapChainPanel = 327745,
      WGPUSType_DawnDeviceAllocatorControl = 327746,
      WGPUSType_Force32 = 2147483647);
   PWGPUSType = ^TWGPUSType;

   TWGPUSamplerBindingType = (
      WGPUSamplerBindingType_BindingNotUsed = 0,
      WGPUSamplerBindingType_Undefined = 1,
      WGPUSamplerBindingType_Filtering = 2,
      WGPUSamplerBindingType_NonFiltering = 3,
      WGPUSamplerBindingType_Comparison = 4,
      WGPUSamplerBindingType_Force32 = 2147483647);
   PWGPUSamplerBindingType = ^TWGPUSamplerBindingType;

   TWGPUSharedFenceType = (
      WGPUSharedFenceType_VkSemaphoreOpaqueFD = 1,
      WGPUSharedFenceType_SyncFD = 2,
      WGPUSharedFenceType_VkSemaphoreZirconHandle = 3,
      WGPUSharedFenceType_DXGISharedHandle = 4,
      WGPUSharedFenceType_MTLSharedEvent = 5,
      WGPUSharedFenceType_EGLSync = 6,
      WGPUSharedFenceType_Force32 = 2147483647);
   PWGPUSharedFenceType = ^TWGPUSharedFenceType;

   TWGPUStatus = (
      WGPUStatus_Success = 1,
      WGPUStatus_Error = 2,
      WGPUStatus_Force32 = 2147483647);
   PWGPUStatus = ^TWGPUStatus;

   TWGPUStencilOperation = (
      WGPUStencilOperation_Undefined = 0,
      WGPUStencilOperation_Keep = 1,
      WGPUStencilOperation_Zero = 2,
      WGPUStencilOperation_Replace = 3,
      WGPUStencilOperation_Invert = 4,
      WGPUStencilOperation_IncrementClamp = 5,
      WGPUStencilOperation_DecrementClamp = 6,
      WGPUStencilOperation_IncrementWrap = 7,
      WGPUStencilOperation_DecrementWrap = 8,
      WGPUStencilOperation_Force32 = 2147483647);
   PWGPUStencilOperation = ^TWGPUStencilOperation;

   TWGPUStorageTextureAccess = (
      WGPUStorageTextureAccess_BindingNotUsed = 0,
      WGPUStorageTextureAccess_Undefined = 1,
      WGPUStorageTextureAccess_WriteOnly = 2,
      WGPUStorageTextureAccess_ReadOnly = 3,
      WGPUStorageTextureAccess_ReadWrite = 4,
      WGPUStorageTextureAccess_Force32 = 2147483647);
   PWGPUStorageTextureAccess = ^TWGPUStorageTextureAccess;

   TWGPUStoreOp = (
      WGPUStoreOp_Undefined = 0,
      WGPUStoreOp_Store = 1,
      WGPUStoreOp_Discard = 2,
      WGPUStoreOp_Force32 = 2147483647);
   PWGPUStoreOp = ^TWGPUStoreOp;

   TWGPUSubgroupMatrixComponentType = (
      WGPUSubgroupMatrixComponentType_F32 = 1,
      WGPUSubgroupMatrixComponentType_F16 = 2,
      WGPUSubgroupMatrixComponentType_U32 = 3,
      WGPUSubgroupMatrixComponentType_I32 = 4,
      WGPUSubgroupMatrixComponentType_Force32 = 2147483647);
   PWGPUSubgroupMatrixComponentType = ^TWGPUSubgroupMatrixComponentType;

   TWGPUSurfaceGetCurrentTextureStatus = (
      WGPUSurfaceGetCurrentTextureStatus_SuccessOptimal = 1,
      WGPUSurfaceGetCurrentTextureStatus_SuccessSuboptimal = 2,
      WGPUSurfaceGetCurrentTextureStatus_Timeout = 3,
      WGPUSurfaceGetCurrentTextureStatus_Outdated = 4,
      WGPUSurfaceGetCurrentTextureStatus_Lost = 5,
      WGPUSurfaceGetCurrentTextureStatus_Error = 6,
      WGPUSurfaceGetCurrentTextureStatus_Force32 = 2147483647);
   PWGPUSurfaceGetCurrentTextureStatus = ^TWGPUSurfaceGetCurrentTextureStatus;

   TWGPUTextureAspect = (
      WGPUTextureAspect_Undefined = 0,
      WGPUTextureAspect_All = 1,
      WGPUTextureAspect_StencilOnly = 2,
      WGPUTextureAspect_DepthOnly = 3,
      WGPUTextureAspect_Plane0Only = 327680,
      WGPUTextureAspect_Plane1Only = 327681,
      WGPUTextureAspect_Plane2Only = 327682,
      WGPUTextureAspect_Force32 = 2147483647);
   PWGPUTextureAspect = ^TWGPUTextureAspect;

   TWGPUTextureDimension = (
      WGPUTextureDimension_Undefined = 0,
      WGPUTextureDimension_1D = 1,
      WGPUTextureDimension_2D = 2,
      WGPUTextureDimension_3D = 3,
      WGPUTextureDimension_Force32 = 2147483647);
   PWGPUTextureDimension = ^TWGPUTextureDimension;

   TWGPUTextureFormat = (
      WGPUTextureFormat_Undefined = 0,
      WGPUTextureFormat_R8Unorm = 1,
      WGPUTextureFormat_R8Snorm = 2,
      WGPUTextureFormat_R8Uint = 3,
      WGPUTextureFormat_R8Sint = 4,
      WGPUTextureFormat_R16Uint = 5,
      WGPUTextureFormat_R16Sint = 6,
      WGPUTextureFormat_R16Float = 7,
      WGPUTextureFormat_RG8Unorm = 8,
      WGPUTextureFormat_RG8Snorm = 9,
      WGPUTextureFormat_RG8Uint = 10,
      WGPUTextureFormat_RG8Sint = 11,
      WGPUTextureFormat_R32Float = 12,
      WGPUTextureFormat_R32Uint = 13,
      WGPUTextureFormat_R32Sint = 14,
      WGPUTextureFormat_RG16Uint = 15,
      WGPUTextureFormat_RG16Sint = 16,
      WGPUTextureFormat_RG16Float = 17,
      WGPUTextureFormat_RGBA8Unorm = 18,
      WGPUTextureFormat_RGBA8UnormSrgb = 19,
      WGPUTextureFormat_RGBA8Snorm = 20,
      WGPUTextureFormat_RGBA8Uint = 21,
      WGPUTextureFormat_RGBA8Sint = 22,
      WGPUTextureFormat_BGRA8Unorm = 23,
      WGPUTextureFormat_BGRA8UnormSrgb = 24,
      WGPUTextureFormat_RGB10A2Uint = 25,
      WGPUTextureFormat_RGB10A2Unorm = 26,
      WGPUTextureFormat_RG11B10Ufloat = 27,
      WGPUTextureFormat_RGB9E5Ufloat = 28,
      WGPUTextureFormat_RG32Float = 29,
      WGPUTextureFormat_RG32Uint = 30,
      WGPUTextureFormat_RG32Sint = 31,
      WGPUTextureFormat_RGBA16Uint = 32,
      WGPUTextureFormat_RGBA16Sint = 33,
      WGPUTextureFormat_RGBA16Float = 34,
      WGPUTextureFormat_RGBA32Float = 35,
      WGPUTextureFormat_RGBA32Uint = 36,
      WGPUTextureFormat_RGBA32Sint = 37,
      WGPUTextureFormat_Stencil8 = 38,
      WGPUTextureFormat_Depth16Unorm = 39,
      WGPUTextureFormat_Depth24Plus = 40,
      WGPUTextureFormat_Depth24PlusStencil8 = 41,
      WGPUTextureFormat_Depth32Float = 42,
      WGPUTextureFormat_Depth32FloatStencil8 = 43,
      WGPUTextureFormat_BC1RGBAUnorm = 44,
      WGPUTextureFormat_BC1RGBAUnormSrgb = 45,
      WGPUTextureFormat_BC2RGBAUnorm = 46,
      WGPUTextureFormat_BC2RGBAUnormSrgb = 47,
      WGPUTextureFormat_BC3RGBAUnorm = 48,
      WGPUTextureFormat_BC3RGBAUnormSrgb = 49,
      WGPUTextureFormat_BC4RUnorm = 50,
      WGPUTextureFormat_BC4RSnorm = 51,
      WGPUTextureFormat_BC5RGUnorm = 52,
      WGPUTextureFormat_BC5RGSnorm = 53,
      WGPUTextureFormat_BC6HRGBUfloat = 54,
      WGPUTextureFormat_BC6HRGBFloat = 55,
      WGPUTextureFormat_BC7RGBAUnorm = 56,
      WGPUTextureFormat_BC7RGBAUnormSrgb = 57,
      WGPUTextureFormat_ETC2RGB8Unorm = 58,
      WGPUTextureFormat_ETC2RGB8UnormSrgb = 59,
      WGPUTextureFormat_ETC2RGB8A1Unorm = 60,
      WGPUTextureFormat_ETC2RGB8A1UnormSrgb = 61,
      WGPUTextureFormat_ETC2RGBA8Unorm = 62,
      WGPUTextureFormat_ETC2RGBA8UnormSrgb = 63,
      WGPUTextureFormat_EACR11Unorm = 64,
      WGPUTextureFormat_EACR11Snorm = 65,
      WGPUTextureFormat_EACRG11Unorm = 66,
      WGPUTextureFormat_EACRG11Snorm = 67,
      WGPUTextureFormat_ASTC4x4Unorm = 68,
      WGPUTextureFormat_ASTC4x4UnormSrgb = 69,
      WGPUTextureFormat_ASTC5x4Unorm = 70,
      WGPUTextureFormat_ASTC5x4UnormSrgb = 71,
      WGPUTextureFormat_ASTC5x5Unorm = 72,
      WGPUTextureFormat_ASTC5x5UnormSrgb = 73,
      WGPUTextureFormat_ASTC6x5Unorm = 74,
      WGPUTextureFormat_ASTC6x5UnormSrgb = 75,
      WGPUTextureFormat_ASTC6x6Unorm = 76,
      WGPUTextureFormat_ASTC6x6UnormSrgb = 77,
      WGPUTextureFormat_ASTC8x5Unorm = 78,
      WGPUTextureFormat_ASTC8x5UnormSrgb = 79,
      WGPUTextureFormat_ASTC8x6Unorm = 80,
      WGPUTextureFormat_ASTC8x6UnormSrgb = 81,
      WGPUTextureFormat_ASTC8x8Unorm = 82,
      WGPUTextureFormat_ASTC8x8UnormSrgb = 83,
      WGPUTextureFormat_ASTC10x5Unorm = 84,
      WGPUTextureFormat_ASTC10x5UnormSrgb = 85,
      WGPUTextureFormat_ASTC10x6Unorm = 86,
      WGPUTextureFormat_ASTC10x6UnormSrgb = 87,
      WGPUTextureFormat_ASTC10x8Unorm = 88,
      WGPUTextureFormat_ASTC10x8UnormSrgb = 89,
      WGPUTextureFormat_ASTC10x10Unorm = 90,
      WGPUTextureFormat_ASTC10x10UnormSrgb = 91,
      WGPUTextureFormat_ASTC12x10Unorm = 92,
      WGPUTextureFormat_ASTC12x10UnormSrgb = 93,
      WGPUTextureFormat_ASTC12x12Unorm = 94,
      WGPUTextureFormat_ASTC12x12UnormSrgb = 95,
      WGPUTextureFormat_R16Unorm = 327680,
      WGPUTextureFormat_RG16Unorm = 327681,
      WGPUTextureFormat_RGBA16Unorm = 327682,
      WGPUTextureFormat_R16Snorm = 327683,
      WGPUTextureFormat_RG16Snorm = 327684,
      WGPUTextureFormat_RGBA16Snorm = 327685,
      WGPUTextureFormat_R8BG8Biplanar420Unorm = 327686,
      WGPUTextureFormat_R10X6BG10X6Biplanar420Unorm = 327687,
      WGPUTextureFormat_R8BG8A8Triplanar420Unorm = 327688,
      WGPUTextureFormat_R8BG8Biplanar422Unorm = 327689,
      WGPUTextureFormat_R8BG8Biplanar444Unorm = 327690,
      WGPUTextureFormat_R10X6BG10X6Biplanar422Unorm = 327691,
      WGPUTextureFormat_R10X6BG10X6Biplanar444Unorm = 327692,
      WGPUTextureFormat_External = 327693,
      WGPUTextureFormat_Force32 = 2147483647);
   PWGPUTextureFormat = ^TWGPUTextureFormat;

   TWGPUTextureSampleType = (
      WGPUTextureSampleType_BindingNotUsed = 0,
      WGPUTextureSampleType_Undefined = 1,
      WGPUTextureSampleType_Float = 2,
      WGPUTextureSampleType_UnfilterableFloat = 3,
      WGPUTextureSampleType_Depth = 4,
      WGPUTextureSampleType_Sint = 5,
      WGPUTextureSampleType_Uint = 6,
      WGPUTextureSampleType_Force32 = 2147483647);
   PWGPUTextureSampleType = ^TWGPUTextureSampleType;

   TWGPUTextureViewDimension = (
      WGPUTextureViewDimension_Undefined = 0,
      WGPUTextureViewDimension_1D = 1,
      WGPUTextureViewDimension_2D = 2,
      WGPUTextureViewDimension_2DArray = 3,
      WGPUTextureViewDimension_Cube = 4,
      WGPUTextureViewDimension_CubeArray = 5,
      WGPUTextureViewDimension_3D = 6,
      WGPUTextureViewDimension_Force32 = 2147483647);
   PWGPUTextureViewDimension = ^TWGPUTextureViewDimension;

   TWGPUToneMappingMode = (
      WGPUToneMappingMode_Standard = 1,
      WGPUToneMappingMode_Extended = 2,
      WGPUToneMappingMode_Force32 = 2147483647);
   PWGPUToneMappingMode = ^TWGPUToneMappingMode;

   TWGPUVertexFormat = (
      WGPUVertexFormat_Uint8 = 1,
      WGPUVertexFormat_Uint8x2 = 2,
      WGPUVertexFormat_Uint8x4 = 3,
      WGPUVertexFormat_Sint8 = 4,
      WGPUVertexFormat_Sint8x2 = 5,
      WGPUVertexFormat_Sint8x4 = 6,
      WGPUVertexFormat_Unorm8 = 7,
      WGPUVertexFormat_Unorm8x2 = 8,
      WGPUVertexFormat_Unorm8x4 = 9,
      WGPUVertexFormat_Snorm8 = 10,
      WGPUVertexFormat_Snorm8x2 = 11,
      WGPUVertexFormat_Snorm8x4 = 12,
      WGPUVertexFormat_Uint16 = 13,
      WGPUVertexFormat_Uint16x2 = 14,
      WGPUVertexFormat_Uint16x4 = 15,
      WGPUVertexFormat_Sint16 = 16,
      WGPUVertexFormat_Sint16x2 = 17,
      WGPUVertexFormat_Sint16x4 = 18,
      WGPUVertexFormat_Unorm16 = 19,
      WGPUVertexFormat_Unorm16x2 = 20,
      WGPUVertexFormat_Unorm16x4 = 21,
      WGPUVertexFormat_Snorm16 = 22,
      WGPUVertexFormat_Snorm16x2 = 23,
      WGPUVertexFormat_Snorm16x4 = 24,
      WGPUVertexFormat_Float16 = 25,
      WGPUVertexFormat_Float16x2 = 26,
      WGPUVertexFormat_Float16x4 = 27,
      WGPUVertexFormat_Float32 = 28,
      WGPUVertexFormat_Float32x2 = 29,
      WGPUVertexFormat_Float32x3 = 30,
      WGPUVertexFormat_Float32x4 = 31,
      WGPUVertexFormat_Uint32 = 32,
      WGPUVertexFormat_Uint32x2 = 33,
      WGPUVertexFormat_Uint32x3 = 34,
      WGPUVertexFormat_Uint32x4 = 35,
      WGPUVertexFormat_Sint32 = 36,
      WGPUVertexFormat_Sint32x2 = 37,
      WGPUVertexFormat_Sint32x3 = 38,
      WGPUVertexFormat_Sint32x4 = 39,
      WGPUVertexFormat_Unorm10_10_10_2 = 40,
      WGPUVertexFormat_Unorm8x4BGRA = 41,
      WGPUVertexFormat_Force32 = 2147483647);
   PWGPUVertexFormat = ^TWGPUVertexFormat;

   TWGPUVertexStepMode = (
      WGPUVertexStepMode_Undefined = 0,
      WGPUVertexStepMode_Vertex = 1,
      WGPUVertexStepMode_Instance = 2,
      WGPUVertexStepMode_Force32 = 2147483647);
   PWGPUVertexStepMode = ^TWGPUVertexStepMode;

   TWGPUWaitStatus = (
      WGPUWaitStatus_Success = 1,
      WGPUWaitStatus_TimedOut = 2,
      WGPUWaitStatus_Error = 3,
      WGPUWaitStatus_Force32 = 2147483647);
   PWGPUWaitStatus = ^TWGPUWaitStatus;
   TWGPUBufferUsage = TWGPUFlags;
   TWGPUColorWriteMask = TWGPUFlags;
   TWGPUHeapProperty = TWGPUFlags;
   TWGPUMapMode = TWGPUFlags;
   TWGPUShaderStage = TWGPUFlags;
   TWGPUTextureUsage = TWGPUFlags;

   TWGPUStringView = record
      data: PUTF8Char;
      length: NativeUInt;
      class operator Implicit(const s : UTF8String) : TWGPUStringView;
      class operator Implicit(const view : TWGPUStringView) : UTF8String;
   end;

   TWGPUCallback = procedure(userdata: Pointer); cdecl;
   TWGPUDawnLoadCacheDataFunction = function(const key: Pointer; keySize: NativeUInt; value: Pointer; valueSize: NativeUInt; userdata: Pointer): NativeUInt; cdecl;
   TWGPUDawnStoreCacheDataFunction = procedure(const key: Pointer; keySize: NativeUInt; const value: Pointer; valueSize: NativeUInt; userdata: Pointer); cdecl;
   TWGPUProc = procedure(); cdecl;
   TWGPUBufferMapCallback = procedure(status: TWGPUMapAsyncStatus; const &message: TWGPUStringView; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPUCompilationInfoCallback = procedure(status: TWGPUCompilationInfoRequestStatus; const compilationInfo: PWGPUCompilationInfo; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPUCreateComputePipelineAsyncCallback = procedure(status: TWGPUCreatePipelineAsyncStatus; pipeline: TWGPUComputePipeline; const &message: TWGPUStringView; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPUCreateRenderPipelineAsyncCallback = procedure(status: TWGPUCreatePipelineAsyncStatus; pipeline: TWGPURenderPipeline; const &message: TWGPUStringView; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPUDeviceLostCallback = procedure(const device: PWGPUDevice; reason: TWGPUDeviceLostReason; const &message: TWGPUStringView; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPULoggingCallback = procedure(&type: TWGPULoggingType; const &message: TWGPUStringView; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPUPopErrorScopeCallback = procedure(status: TWGPUPopErrorScopeStatus; &type: TWGPUErrorType; const &message: TWGPUStringView; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPUQueueWorkDoneCallback = procedure(status: TWGPUQueueWorkDoneStatus; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPURequestAdapterCallback = procedure(status: TWGPURequestAdapterStatus; adapter: TWGPUAdapter; const &message: TWGPUStringView; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPURequestDeviceCallback = procedure(status: TWGPURequestDeviceStatus; device: TWGPUDevice; const &message: TWGPUStringView; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPUUncapturedErrorCallback = procedure(const device: PWGPUDevice; &type: TWGPUErrorType; const &message: TWGPUStringView; userdata1: Pointer; userdata2: Pointer); cdecl;
   TWGPUChainedStruct = record
      next: PWGPUChainedStruct;
      sType: TWGPUSType;
   end;

   TWGPUBufferMapCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      mode: TWGPUCallbackMode;
      callback: TWGPUBufferMapCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPUCompilationInfoCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      mode: TWGPUCallbackMode;
      callback: TWGPUCompilationInfoCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPUCreateComputePipelineAsyncCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      mode: TWGPUCallbackMode;
      callback: TWGPUCreateComputePipelineAsyncCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPUCreateRenderPipelineAsyncCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      mode: TWGPUCallbackMode;
      callback: TWGPUCreateRenderPipelineAsyncCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPUDeviceLostCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      mode: TWGPUCallbackMode;
      callback: TWGPUDeviceLostCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPULoggingCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      callback: TWGPULoggingCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPUPopErrorScopeCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      mode: TWGPUCallbackMode;
      callback: TWGPUPopErrorScopeCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPUQueueWorkDoneCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      mode: TWGPUCallbackMode;
      callback: TWGPUQueueWorkDoneCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPURequestAdapterCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      mode: TWGPUCallbackMode;
      callback: TWGPURequestAdapterCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPURequestDeviceCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      mode: TWGPUCallbackMode;
      callback: TWGPURequestDeviceCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPUUncapturedErrorCallbackInfo = record
      nextInChain: PWGPUChainedStruct;
      callback: TWGPUUncapturedErrorCallback;
      userdata1: Pointer;
      userdata2: Pointer;
   end;

   TWGPUINTERNAL_HAVE_EMDAWNWEBGPU_HEADER = record
      unused: TWGPUBool;
   end;

   TWGPUAdapterPropertiesD3D = record
      chain: TWGPUChainedStruct;
      shaderModel: UInt32;
   end;

   TWGPUAdapterPropertiesSubgroups = record
      chain: TWGPUChainedStruct;
      subgroupMinSize: UInt32;
      subgroupMaxSize: UInt32;
   end;

   TWGPUAdapterPropertiesVk = record
      chain: TWGPUChainedStruct;
      driverVersion: UInt32;
   end;

   TWGPUBlendComponent = record
      operation: TWGPUBlendOperation;
      srcFactor: TWGPUBlendFactor;
      dstFactor: TWGPUBlendFactor;
   end;

   TWGPUBufferBindingLayout = record
      nextInChain: PWGPUChainedStruct;
      &type: TWGPUBufferBindingType;
      hasDynamicOffset: TWGPUBool;
      minBindingSize: UInt64;
   end;

   TWGPUBufferHostMappedPointer = record
      chain: TWGPUChainedStruct;
      pointer: Pointer;
      disposeCallback: TWGPUCallback;
      userdata: Pointer;
   end;

   TWGPUColor = record
      r: Double;
      g: Double;
      b: Double;
      a: Double;
   end;

   TWGPUColorTargetStateExpandResolveTextureDawn = record
      chain: TWGPUChainedStruct;
      enabled: TWGPUBool;
   end;

   TWGPUCopyTextureForBrowserOptions = record
      nextInChain: PWGPUChainedStruct;
      flipY: TWGPUBool;
      needsColorSpaceConversion: TWGPUBool;
      srcAlphaMode: TWGPUAlphaMode;
      srcTransferFunctionParameters: PSingle;
      conversionMatrix: PSingle;
      dstTransferFunctionParameters: PSingle;
      dstAlphaMode: TWGPUAlphaMode;
      internalUsage: TWGPUBool;
   end;

   TWGPUDawnWGSLBlocklist = record
      chain: TWGPUChainedStruct;
      blocklistedFeatureCount: NativeUInt;
      blocklistedFeatures: PPUTF8Char;
   end;

   TWGPUDawnAdapterPropertiesPowerPreference = record
      chain: TWGPUChainedStruct;
      powerPreference: TWGPUPowerPreference;
   end;

   TWGPUDawnBufferDescriptorErrorInfoFromWireClient = record
      chain: TWGPUChainedStruct;
      outOfMemory: TWGPUBool;
   end;

   TWGPUDawnCompilationMessageUtf16 = record
      chain: TWGPUChainedStruct;
      linePos: UInt64;
      offset: UInt64;
      length: UInt64;
   end;

   TWGPUDawnDeviceAllocatorControl = record
      chain: TWGPUChainedStruct;
      allocatorHeapBlockSize: NativeUInt;
   end;

   TWGPUDawnDrmFormatProperties = record
      modifier: UInt64;
      modifierPlaneCount: UInt32;
   end;

   TWGPUDawnEncoderInternalUsageDescriptor = record
      chain: TWGPUChainedStruct;
      useInternalUsages: TWGPUBool;
   end;

   TWGPUDawnExperimentalImmediateDataLimits = record
      chain: TWGPUChainedStruct;
      maxImmediateDataRangeByteSize: UInt32;
   end;

   TWGPUDawnFakeBufferOOMForTesting = record
      chain: TWGPUChainedStruct;
      fakeOOMAtWireClientMap: TWGPUBool;
      fakeOOMAtNativeMap: TWGPUBool;
      fakeOOMAtDevice: TWGPUBool;
   end;

   TWGPUDawnInjectedInvalidSType = record
      chain: TWGPUChainedStruct;
      invalidSType: TWGPUSType;
   end;

   TWGPUDawnRenderPassColorAttachmentRenderToSingleSampled = record
      chain: TWGPUChainedStruct;
      implicitSampleCount: UInt32;
   end;

   TWGPUDawnShaderModuleSPIRVOptionsDescriptor = record
      chain: TWGPUChainedStruct;
      allowNonUniformDerivatives: TWGPUBool;
   end;

   TWGPUDawnTexelCopyBufferRowAlignmentLimits = record
      chain: TWGPUChainedStruct;
      minTexelCopyBufferRowAlignment: UInt32;
   end;

   TWGPUDawnTextureInternalUsageDescriptor = record
      chain: TWGPUChainedStruct;
      internalUsage: TWGPUTextureUsage;
   end;

   TWGPUDawnTogglesDescriptor = record
      chain: TWGPUChainedStruct;
      enabledToggleCount: NativeUInt;
      enabledToggles: PPUTF8Char;
      disabledToggleCount: NativeUInt;
      disabledToggles: PPUTF8Char;
   end;

   TWGPUDawnWireWGSLControl = record
      chain: TWGPUChainedStruct;
      enableExperimental: TWGPUBool;
      enableUnsafe: TWGPUBool;
      enableTesting: TWGPUBool;
   end;

   TWGPUExtent2D = record
      width: UInt32;
      height: UInt32;
   end;

   TWGPUExtent3D = record
      width: UInt32;
      height: UInt32;
      depthOrArrayLayers: UInt32;
   end;

   TWGPUExternalTextureBindingEntry = record
      chain: TWGPUChainedStruct;
      externalTexture: TWGPUExternalTexture;
   end;

   TWGPUExternalTextureBindingLayout = record
      chain: TWGPUChainedStruct;
   end;

   TWGPUFuture = record
      id: UInt64;
   end;

   TWGPUInstanceCapabilities = record
      nextInChain: PWGPUChainedStruct;
      timedWaitAnyEnable: TWGPUBool;
      timedWaitAnyMaxCount: NativeUInt;
   end;

   TWGPUMemoryHeapInfo = record
      properties: TWGPUHeapProperty;
      size: UInt64;
   end;

   TWGPUMultisampleState = record
      nextInChain: PWGPUChainedStruct;
      count: UInt32;
      mask: UInt32;
      alphaToCoverageEnabled: TWGPUBool;
   end;

   TWGPUOrigin2D = record
      x: UInt32;
      y: UInt32;
   end;

   TWGPUOrigin3D = record
      x: UInt32;
      y: UInt32;
      z: UInt32;
   end;

   TWGPUPassTimestampWrites = record
      nextInChain: PWGPUChainedStruct;
      querySet: TWGPUQuerySet;
      beginningOfPassWriteIndex: UInt32;
      endOfPassWriteIndex: UInt32;
   end;

   TWGPUPipelineLayoutStorageAttachment = record
      nextInChain: PWGPUChainedStruct;
      offset: UInt64;
      format: TWGPUTextureFormat;
   end;

   TWGPUPrimitiveState = record
      nextInChain: PWGPUChainedStruct;
      topology: TWGPUPrimitiveTopology;
      stripIndexFormat: TWGPUIndexFormat;
      frontFace: TWGPUFrontFace;
      cullMode: TWGPUCullMode;
      unclippedDepth: TWGPUBool;
   end;

   TWGPURenderPassDepthStencilAttachment = record
      nextInChain: PWGPUChainedStruct;
      view: TWGPUTextureView;
      depthLoadOp: TWGPULoadOp;
      depthStoreOp: TWGPUStoreOp;
      depthClearValue: Single;
      depthReadOnly: TWGPUBool;
      stencilLoadOp: TWGPULoadOp;
      stencilStoreOp: TWGPUStoreOp;
      stencilClearValue: UInt32;
      stencilReadOnly: TWGPUBool;
   end;

   TWGPURenderPassDescriptorExpandResolveRect = record
      chain: TWGPUChainedStruct;
      x: UInt32;
      y: UInt32;
      width: UInt32;
      height: UInt32;
   end;

   TWGPURenderPassMaxDrawCount = record
      chain: TWGPUChainedStruct;
      maxDrawCount: UInt64;
   end;

   TWGPURequestAdapterWebXROptions = record
      chain: TWGPUChainedStruct;
      xrCompatible: TWGPUBool;
   end;

   TWGPUSamplerBindingLayout = record
      nextInChain: PWGPUChainedStruct;
      &type: TWGPUSamplerBindingType;
   end;

   TWGPUShaderModuleCompilationOptions = record
      chain: TWGPUChainedStruct;
      strictMath: TWGPUBool;
   end;

   TWGPUShaderSourceSPIRV = record
      chain: TWGPUChainedStruct;
      codeSize: UInt32;
      code: PUInt32;
   end;

   TWGPUSharedBufferMemoryBeginAccessDescriptor = record
      nextInChain: PWGPUChainedStruct;
      initialized: TWGPUBool;
      fenceCount: NativeUInt;
      fences: PWGPUSharedFence;
      signaledValues: PUInt64;
   end;

   TWGPUSharedBufferMemoryEndAccessState = record
      nextInChain: PWGPUChainedStruct;
      initialized: TWGPUBool;
      fenceCount: NativeUInt;
      fences: PWGPUSharedFence;
      signaledValues: PUInt64;
   end;

   TWGPUSharedBufferMemoryProperties = record
      nextInChain: PWGPUChainedStruct;
      usage: TWGPUBufferUsage;
      size: UInt64;
   end;

   TWGPUSharedFenceDXGISharedHandleDescriptor = record
      chain: TWGPUChainedStruct;
      handle: Pointer;
   end;

   TWGPUSharedFenceDXGISharedHandleExportInfo = record
      chain: TWGPUChainedStruct;
      handle: Pointer;
   end;

   TWGPUSharedFenceEGLSyncDescriptor = record
      chain: TWGPUChainedStruct;
      sync: Pointer;
   end;

   TWGPUSharedFenceEGLSyncExportInfo = record
      chain: TWGPUChainedStruct;
      sync: Pointer;
   end;

   TWGPUSharedFenceMTLSharedEventDescriptor = record
      chain: TWGPUChainedStruct;
      sharedEvent: Pointer;
   end;

   TWGPUSharedFenceMTLSharedEventExportInfo = record
      chain: TWGPUChainedStruct;
      sharedEvent: Pointer;
   end;

   TWGPUSharedFenceSyncFDDescriptor = record
      chain: TWGPUChainedStruct;
      handle: Integer;
   end;

   TWGPUSharedFenceSyncFDExportInfo = record
      chain: TWGPUChainedStruct;
      handle: Integer;
   end;

   TWGPUSharedFenceVkSemaphoreOpaqueFDDescriptor = record
      chain: TWGPUChainedStruct;
      handle: Integer;
   end;

   TWGPUSharedFenceVkSemaphoreOpaqueFDExportInfo = record
      chain: TWGPUChainedStruct;
      handle: Integer;
   end;

   TWGPUSharedFenceVkSemaphoreZirconHandleDescriptor = record
      chain: TWGPUChainedStruct;
      handle: UInt32;
   end;

   TWGPUSharedFenceVkSemaphoreZirconHandleExportInfo = record
      chain: TWGPUChainedStruct;
      handle: UInt32;
   end;

   TWGPUSharedTextureMemoryD3DSwapchainBeginState = record
      chain: TWGPUChainedStruct;
      isSwapchain: TWGPUBool;
   end;

   TWGPUSharedTextureMemoryDXGISharedHandleDescriptor = record
      chain: TWGPUChainedStruct;
      handle: Pointer;
      useKeyedMutex: TWGPUBool;
   end;

   TWGPUSharedTextureMemoryEGLImageDescriptor = record
      chain: TWGPUChainedStruct;
      image: Pointer;
   end;

   TWGPUSharedTextureMemoryIOSurfaceDescriptor = record
      chain: TWGPUChainedStruct;
      ioSurface: Pointer;
      allowStorageBinding: TWGPUBool;
   end;

   TWGPUSharedTextureMemoryAHardwareBufferDescriptor = record
      chain: TWGPUChainedStruct;
      handle: Pointer;
      useExternalFormat: TWGPUBool;
   end;

   TWGPUSharedTextureMemoryDmaBufPlane = record
      fd: Integer;
      offset: UInt64;
      stride: UInt32;
   end;

   TWGPUSharedTextureMemoryOpaqueFDDescriptor = record
      chain: TWGPUChainedStruct;
      vkImageCreateInfo: Pointer;
      memoryFD: Integer;
      memoryTypeIndex: UInt32;
      allocationSize: UInt64;
      dedicatedAllocation: TWGPUBool;
   end;

   TWGPUSharedTextureMemoryVkDedicatedAllocationDescriptor = record
      chain: TWGPUChainedStruct;
      dedicatedAllocation: TWGPUBool;
   end;

   TWGPUSharedTextureMemoryVkImageLayoutBeginState = record
      chain: TWGPUChainedStruct;
      oldLayout: Int32;
      newLayout: Int32;
   end;

   TWGPUSharedTextureMemoryVkImageLayoutEndState = record
      chain: TWGPUChainedStruct;
      oldLayout: Int32;
      newLayout: Int32;
   end;

   TWGPUSharedTextureMemoryZirconHandleDescriptor = record
      chain: TWGPUChainedStruct;
      memoryFD: UInt32;
      allocationSize: UInt64;
   end;

   TWGPUStaticSamplerBindingLayout = record
      chain: TWGPUChainedStruct;
      sampler: TWGPUSampler;
      sampledTextureBinding: UInt32;
   end;

   TWGPUStencilFaceState = record
      compare: TWGPUCompareFunction;
      failOp: TWGPUStencilOperation;
      depthFailOp: TWGPUStencilOperation;
      passOp: TWGPUStencilOperation;
   end;

   TWGPUStorageTextureBindingLayout = record
      nextInChain: PWGPUChainedStruct;
      access: TWGPUStorageTextureAccess;
      format: TWGPUTextureFormat;
      viewDimension: TWGPUTextureViewDimension;
   end;

   TWGPUSubgroupMatrixConfig = record
      componentType: TWGPUSubgroupMatrixComponentType;
      resultComponentType: TWGPUSubgroupMatrixComponentType;
      M: UInt32;
      N: UInt32;
      K: UInt32;
   end;

   TWGPUSupportedWGSLLanguageFeatures = record
      featureCount: NativeUInt;
      features: PWGPUWGSLLanguageFeatureName;
   end;

   TWGPUSupportedFeatures = record
      featureCount: NativeUInt;
      features: PWGPUFeatureName;
   end;

   TWGPUSurfaceCapabilities = record
      nextInChain: PWGPUChainedStruct;
      usages: TWGPUTextureUsage;
      formatCount: NativeUInt;
      formats: PWGPUTextureFormat;
      presentModeCount: NativeUInt;
      presentModes: PWGPUPresentMode;
      alphaModeCount: NativeUInt;
      alphaModes: PWGPUCompositeAlphaMode;
   end;

   TWGPUSurfaceColorManagement = record
      chain: TWGPUChainedStruct;
      colorSpace: TWGPUPredefinedColorSpace;
      toneMappingMode: TWGPUToneMappingMode;
   end;

   TWGPUSurfaceConfiguration = record
      nextInChain: PWGPUChainedStruct;
      device: TWGPUDevice;
      format: TWGPUTextureFormat;
      usage: TWGPUTextureUsage;
      width: UInt32;
      height: UInt32;
      viewFormatCount: NativeUInt;
      viewFormats: PWGPUTextureFormat;
      alphaMode: TWGPUCompositeAlphaMode;
      presentMode: TWGPUPresentMode;
   end;

   TWGPUSurfaceDescriptorFromWindowsUWPSwapChainPanel = record
      chain: TWGPUChainedStruct;
      swapChainPanel: Pointer;
   end;

   TWGPUSurfaceDescriptorFromWindowsWinUISwapChainPanel = record
      chain: TWGPUChainedStruct;
      swapChainPanel: Pointer;
   end;

   TWGPUSurfaceDescriptorFromWindowsCoreWindow = record
      chain: TWGPUChainedStruct;
      coreWindow: Pointer;
   end;

   TWGPUSurfaceSourceXCBWindow = record
      chain: TWGPUChainedStruct;
      connection: Pointer;
      window: UInt32;
   end;

   TWGPUSurfaceSourceAndroidNativeWindow = record
      chain: TWGPUChainedStruct;
      window: Pointer;
   end;

   TWGPUSurfaceSourceMetalLayer = record
      chain: TWGPUChainedStruct;
      layer: Pointer;
   end;

   TWGPUSurfaceSourceWaylandSurface = record
      chain: TWGPUChainedStruct;
      display: Pointer;
      surface: Pointer;
   end;

   TWGPUSurfaceSourceWindowsHWND = record
      chain: TWGPUChainedStruct;
      hinstance: Pointer;
      hwnd: Pointer;
   end;

   TWGPUSurfaceSourceXlibWindow = record
      chain: TWGPUChainedStruct;
      display: Pointer;
      window: UInt64;
   end;

   TWGPUSurfaceTexture = record
      nextInChain: PWGPUChainedStruct;
      texture: TWGPUTexture;
      status: TWGPUSurfaceGetCurrentTextureStatus;
   end;

   TWGPUTexelCopyBufferLayout = record
      offset: UInt64;
      bytesPerRow: UInt32;
      rowsPerImage: UInt32;
   end;

   TWGPUTextureBindingLayout = record
      nextInChain: PWGPUChainedStruct;
      sampleType: TWGPUTextureSampleType;
      viewDimension: TWGPUTextureViewDimension;
      multisampled: TWGPUBool;
   end;

   TWGPUTextureBindingViewDimensionDescriptor = record
      chain: TWGPUChainedStruct;
      textureBindingViewDimension: TWGPUTextureViewDimension;
   end;

   TWGPUVertexAttribute = record
      nextInChain: PWGPUChainedStruct;
      format: TWGPUVertexFormat;
      offset: UInt64;
      shaderLocation: UInt32;
   end;

   TWGPUYCbCrVkDescriptor = record
      chain: TWGPUChainedStruct;
      vkFormat: UInt32;
      vkYCbCrModel: UInt32;
      vkYCbCrRange: UInt32;
      vkComponentSwizzleRed: UInt32;
      vkComponentSwizzleGreen: UInt32;
      vkComponentSwizzleBlue: UInt32;
      vkComponentSwizzleAlpha: UInt32;
      vkXChromaOffset: UInt32;
      vkYChromaOffset: UInt32;
      vkChromaFilter: TWGPUFilterMode;
      forceExplicitReconstruction: TWGPUBool;
      externalFormat: UInt64;
   end;

   TWGPUAHardwareBufferProperties = record
      yCbCrInfo: TWGPUYCbCrVkDescriptor;
   end;

   TWGPUAdapterPropertiesMemoryHeaps = record
      chain: TWGPUChainedStruct;
      heapCount: NativeUInt;
      heapInfo: PWGPUMemoryHeapInfo;
   end;

   TWGPUAdapterPropertiesSubgroupMatrixConfigs = record
      chain: TWGPUChainedStruct;
      configCount: NativeUInt;
      configs: PWGPUSubgroupMatrixConfig;
   end;

   TWGPUBindGroupEntry = record
      nextInChain: PWGPUChainedStruct;
      binding: UInt32;
      buffer: TWGPUBuffer;
      offset: UInt64;
      size: UInt64;
      sampler: TWGPUSampler;
      textureView: TWGPUTextureView;
   end;

   TWGPUBindGroupLayoutEntry = record
      nextInChain: PWGPUChainedStruct;
      binding: UInt32;
      visibility: TWGPUShaderStage;
      buffer: TWGPUBufferBindingLayout;
      sampler: TWGPUSamplerBindingLayout;
      texture: TWGPUTextureBindingLayout;
      storageTexture: TWGPUStorageTextureBindingLayout;
   end;

   TWGPUBlendState = record
      color: TWGPUBlendComponent;
      alpha: TWGPUBlendComponent;
   end;

   TWGPUBufferDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      usage: TWGPUBufferUsage;
      size: UInt64;
      mappedAtCreation: TWGPUBool;
   end;

   TWGPUCommandBufferDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
   end;

   TWGPUCommandEncoderDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
   end;

   TWGPUCompilationMessage = record
      nextInChain: PWGPUChainedStruct;
      &message: TWGPUStringView;
      &type: TWGPUCompilationMessageType;
      lineNum: UInt64;
      linePos: UInt64;
      offset: UInt64;
      length: UInt64;
   end;

   TWGPUComputePassDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      timestampWrites: PWGPUPassTimestampWrites;
   end;

   TWGPUConstantEntry = record
      nextInChain: PWGPUChainedStruct;
      key: TWGPUStringView;
      value: Double;
   end;

   TWGPUDawnCacheDeviceDescriptor = record
      chain: TWGPUChainedStruct;
      isolationKey: TWGPUStringView;
      loadDataFunction: TWGPUDawnLoadCacheDataFunction;
      storeDataFunction: TWGPUDawnStoreCacheDataFunction;
      functionUserdata: Pointer;
   end;

   TWGPUDawnDrmFormatCapabilities = record
      chain: TWGPUChainedStruct;
      propertiesCount: NativeUInt;
      properties: PWGPUDawnDrmFormatProperties;
   end;

   TWGPUDepthStencilState = record
      nextInChain: PWGPUChainedStruct;
      format: TWGPUTextureFormat;
      depthWriteEnabled: TWGPUOptionalBool;
      depthCompare: TWGPUCompareFunction;
      stencilFront: TWGPUStencilFaceState;
      stencilBack: TWGPUStencilFaceState;
      stencilReadMask: UInt32;
      stencilWriteMask: UInt32;
      depthBias: Int32;
      depthBiasSlopeScale: Single;
      depthBiasClamp: Single;
   end;

   TWGPUEmscriptenSurfaceSourceCanvasHTMLSelector = record
      chain: TWGPUChainedStruct;
      selector: TWGPUStringView;
   end;

   TWGPUExternalTextureDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      plane0: TWGPUTextureView;
      plane1: TWGPUTextureView;
      cropOrigin: TWGPUOrigin2D;
      cropSize: TWGPUExtent2D;
      apparentSize: TWGPUExtent2D;
      doYuvToRgbConversionOnly: TWGPUBool;
      yuvToRgbConversionMatrix: PSingle;
      srcTransferFunctionParameters: PSingle;
      dstTransferFunctionParameters: PSingle;
      gamutConversionMatrix: PSingle;
      mirrored: TWGPUBool;
      rotation: TWGPUExternalTextureRotation;
   end;

   TWGPUFutureWaitInfo = record
      future: TWGPUFuture;
      completed: TWGPUBool;
   end;

   TWGPUImageCopyExternalTexture = record
      nextInChain: PWGPUChainedStruct;
      externalTexture: TWGPUExternalTexture;
      origin: TWGPUOrigin3D;
      naturalSize: TWGPUExtent2D;
   end;

   TWGPUInstanceDescriptor = record
      nextInChain: PWGPUChainedStruct;
      capabilities: TWGPUInstanceCapabilities;
   end;

   TWGPULimits = record
      nextInChain: PWGPUChainedStruct;
      maxTextureDimension1D: UInt32;
      maxTextureDimension2D: UInt32;
      maxTextureDimension3D: UInt32;
      maxTextureArrayLayers: UInt32;
      maxBindGroups: UInt32;
      maxBindGroupsPlusVertexBuffers: UInt32;
      maxBindingsPerBindGroup: UInt32;
      maxDynamicUniformBuffersPerPipelineLayout: UInt32;
      maxDynamicStorageBuffersPerPipelineLayout: UInt32;
      maxSampledTexturesPerShaderStage: UInt32;
      maxSamplersPerShaderStage: UInt32;
      maxStorageBuffersPerShaderStage: UInt32;
      maxStorageTexturesPerShaderStage: UInt32;
      maxUniformBuffersPerShaderStage: UInt32;
      maxUniformBufferBindingSize: UInt64;
      maxStorageBufferBindingSize: UInt64;
      minUniformBufferOffsetAlignment: UInt32;
      minStorageBufferOffsetAlignment: UInt32;
      maxVertexBuffers: UInt32;
      maxBufferSize: UInt64;
      maxVertexAttributes: UInt32;
      maxVertexBufferArrayStride: UInt32;
      maxInterStageShaderVariables: UInt32;
      maxColorAttachments: UInt32;
      maxColorAttachmentBytesPerSample: UInt32;
      maxComputeWorkgroupStorageSize: UInt32;
      maxComputeInvocationsPerWorkgroup: UInt32;
      maxComputeWorkgroupSizeX: UInt32;
      maxComputeWorkgroupSizeY: UInt32;
      maxComputeWorkgroupSizeZ: UInt32;
      maxComputeWorkgroupsPerDimension: UInt32;
      maxStorageBuffersInVertexStage: UInt32;
      maxStorageTexturesInVertexStage: UInt32;
      maxStorageBuffersInFragmentStage: UInt32;
      maxStorageTexturesInFragmentStage: UInt32;
   end;

   TWGPUPipelineLayoutPixelLocalStorage = record
      chain: TWGPUChainedStruct;
      totalPixelLocalStorageSize: UInt64;
      storageAttachmentCount: NativeUInt;
      storageAttachments: PWGPUPipelineLayoutStorageAttachment;
   end;

   TWGPUQuerySetDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      &type: TWGPUQueryType;
      count: UInt32;
   end;

   TWGPUQueueDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
   end;

   TWGPURenderBundleDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
   end;

   TWGPURenderBundleEncoderDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      colorFormatCount: NativeUInt;
      colorFormats: PWGPUTextureFormat;
      depthStencilFormat: TWGPUTextureFormat;
      sampleCount: UInt32;
      depthReadOnly: TWGPUBool;
      stencilReadOnly: TWGPUBool;
   end;

   TWGPURenderPassColorAttachment = record
      nextInChain: PWGPUChainedStruct;
      view: TWGPUTextureView;
      depthSlice: UInt32;
      resolveTarget: TWGPUTextureView;
      loadOp: TWGPULoadOp;
      storeOp: TWGPUStoreOp;
      clearValue: TWGPUColor;
   end;

   TWGPURenderPassStorageAttachment = record
      nextInChain: PWGPUChainedStruct;
      offset: UInt64;
      storage: TWGPUTextureView;
      loadOp: TWGPULoadOp;
      storeOp: TWGPUStoreOp;
      clearValue: TWGPUColor;
   end;

   TWGPURequestAdapterOptions = record
      nextInChain: PWGPUChainedStruct;
      featureLevel: TWGPUFeatureLevel;
      powerPreference: TWGPUPowerPreference;
      forceFallbackAdapter: TWGPUBool;
      backendType: TWGPUBackendType;
      compatibleSurface: TWGPUSurface;
   end;

   TWGPUSamplerDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      addressModeU: TWGPUAddressMode;
      addressModeV: TWGPUAddressMode;
      addressModeW: TWGPUAddressMode;
      magFilter: TWGPUFilterMode;
      minFilter: TWGPUFilterMode;
      mipmapFilter: TWGPUMipmapFilterMode;
      lodMinClamp: Single;
      lodMaxClamp: Single;
      compare: TWGPUCompareFunction;
      maxAnisotropy: UInt16;
   end;

   TWGPUShaderSourceWGSL = record
      chain: TWGPUChainedStruct;
      code: TWGPUStringView;
   end;

   TWGPUSharedBufferMemoryDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
   end;

   TWGPUSharedFenceDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
   end;

   TWGPUSharedFenceExportInfo = record
      nextInChain: PWGPUChainedStruct;
      &type: TWGPUSharedFenceType;
   end;

   TWGPUSharedTextureMemoryAHardwareBufferProperties = record
      chain: TWGPUChainedStruct;
      yCbCrInfo: TWGPUYCbCrVkDescriptor;
   end;

   TWGPUSharedTextureMemoryBeginAccessDescriptor = record
      nextInChain: PWGPUChainedStruct;
      concurrentRead: TWGPUBool;
      initialized: TWGPUBool;
      fenceCount: NativeUInt;
      fences: PWGPUSharedFence;
      signaledValues: PUInt64;
   end;

   TWGPUSharedTextureMemoryDmaBufDescriptor = record
      chain: TWGPUChainedStruct;
      size: TWGPUExtent3D;
      drmFormat: UInt32;
      drmModifier: UInt64;
      planeCount: NativeUInt;
      planes: PWGPUSharedTextureMemoryDmaBufPlane;
   end;

   TWGPUSharedTextureMemoryEndAccessState = record
      nextInChain: PWGPUChainedStruct;
      initialized: TWGPUBool;
      fenceCount: NativeUInt;
      fences: PWGPUSharedFence;
      signaledValues: PUInt64;
   end;

   TWGPUTexelCopyBufferInfo = record
      layout: TWGPUTexelCopyBufferLayout;
      buffer: TWGPUBuffer;
   end;

   TWGPUTexelCopyTextureInfo = record
      texture: TWGPUTexture;
      mipLevel: UInt32;
      origin: TWGPUOrigin3D;
      aspect: TWGPUTextureAspect;
   end;

   TWGPUTextureDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      usage: TWGPUTextureUsage;
      dimension: TWGPUTextureDimension;
      size: TWGPUExtent3D;
      format: TWGPUTextureFormat;
      mipLevelCount: UInt32;
      sampleCount: UInt32;
      viewFormatCount: NativeUInt;
      viewFormats: PWGPUTextureFormat;
   end;

   TWGPUTextureViewDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      format: TWGPUTextureFormat;
      dimension: TWGPUTextureViewDimension;
      baseMipLevel: UInt32;
      mipLevelCount: UInt32;
      baseArrayLayer: UInt32;
      arrayLayerCount: UInt32;
      aspect: TWGPUTextureAspect;
      usage: TWGPUTextureUsage;
   end;

   TWGPUVertexBufferLayout = record
      nextInChain: PWGPUChainedStruct;
      stepMode: TWGPUVertexStepMode;
      arrayStride: UInt64;
      attributeCount: NativeUInt;
      attributes: PWGPUVertexAttribute;
   end;

   TWGPUAdapterInfo = record
      nextInChain: PWGPUChainedStruct;
      vendor: TWGPUStringView;
      architecture: TWGPUStringView;
      device: TWGPUStringView;
      description: TWGPUStringView;
      backendType: TWGPUBackendType;
      adapterType: TWGPUAdapterType;
      vendorID: UInt32;
      deviceID: UInt32;
      subgroupMinSize: UInt32;
      subgroupMaxSize: UInt32;
   end;

   TWGPUBindGroupDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      layout: TWGPUBindGroupLayout;
      entryCount: NativeUInt;
      entries: PWGPUBindGroupEntry;
   end;

   TWGPUBindGroupLayoutDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      entryCount: NativeUInt;
      entries: PWGPUBindGroupLayoutEntry;
   end;

   TWGPUColorTargetState = record
      nextInChain: PWGPUChainedStruct;
      format: TWGPUTextureFormat;
      blend: PWGPUBlendState;
      writeMask: TWGPUColorWriteMask;
   end;

   TWGPUCompilationInfo = record
      nextInChain: PWGPUChainedStruct;
      messageCount: NativeUInt;
      messages: PWGPUCompilationMessage;
   end;

   TWGPUComputeState = record
      nextInChain: PWGPUChainedStruct;
      module: TWGPUShaderModule;
      entryPoint: TWGPUStringView;
      constantCount: NativeUInt;
      constants: PWGPUConstantEntry;
   end;

   TWGPUDawnFormatCapabilities = record
      nextInChain: PWGPUChainedStruct;
   end;

   TWGPUDeviceDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      requiredFeatureCount: NativeUInt;
      requiredFeatures: PWGPUFeatureName;
      requiredLimits: PWGPULimits;
      defaultQueue: TWGPUQueueDescriptor;
      deviceLostCallbackInfo: TWGPUDeviceLostCallbackInfo;
      uncapturedErrorCallbackInfo: TWGPUUncapturedErrorCallbackInfo;
   end;

   TWGPUPipelineLayoutDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      bindGroupLayoutCount: NativeUInt;
      bindGroupLayouts: PWGPUBindGroupLayout;
      immediateDataRangeByteSize: UInt32;
   end;

   TWGPURenderPassPixelLocalStorage = record
      chain: TWGPUChainedStruct;
      totalPixelLocalStorageSize: UInt64;
      storageAttachmentCount: NativeUInt;
      storageAttachments: PWGPURenderPassStorageAttachment;
   end;

   TWGPUShaderModuleDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
   end;

   TWGPUSharedTextureMemoryDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
   end;

   TWGPUSharedTextureMemoryProperties = record
      nextInChain: PWGPUChainedStruct;
      usage: TWGPUTextureUsage;
      size: TWGPUExtent3D;
      format: TWGPUTextureFormat;
   end;

   TWGPUSurfaceDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
   end;

   TWGPUVertexState = record
      nextInChain: PWGPUChainedStruct;
      module: TWGPUShaderModule;
      entryPoint: TWGPUStringView;
      constantCount: NativeUInt;
      constants: PWGPUConstantEntry;
      bufferCount: NativeUInt;
      buffers: PWGPUVertexBufferLayout;
   end;

   TWGPUComputePipelineDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      layout: TWGPUPipelineLayout;
      compute: TWGPUComputeState;
   end;

   TWGPUFragmentState = record
      nextInChain: PWGPUChainedStruct;
      module: TWGPUShaderModule;
      entryPoint: TWGPUStringView;
      constantCount: NativeUInt;
      constants: PWGPUConstantEntry;
      targetCount: NativeUInt;
      targets: PWGPUColorTargetState;
   end;

   TWGPURenderPassDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      colorAttachmentCount: NativeUInt;
      colorAttachments: PWGPURenderPassColorAttachment;
      depthStencilAttachment: PWGPURenderPassDepthStencilAttachment;
      occlusionQuerySet: TWGPUQuerySet;
      timestampWrites: PWGPUPassTimestampWrites;
   end;

   TWGPURenderPipelineDescriptor = record
      nextInChain: PWGPUChainedStruct;
      &label: TWGPUStringView;
      layout: TWGPUPipelineLayout;
      vertex: TWGPUVertexState;
      primitive: TWGPUPrimitiveState;
      depthStencil: PWGPUDepthStencilState;
      multisample: TWGPUMultisampleState;
      fragment: PWGPUFragmentState;
   end;

   WGPURenderPassDescriptorMaxDrawCount = TWGPURenderPassMaxDrawCount;
   WGPUShaderModuleSPIRVDescriptor = TWGPUShaderSourceSPIRV;
   WGPUShaderModuleWGSLDescriptor = TWGPUShaderSourceWGSL;
   WGPUSurfaceDescriptorFromAndroidNativeWindow = TWGPUSurfaceSourceAndroidNativeWindow;
   WGPUSurfaceDescriptorFromMetalLayer = TWGPUSurfaceSourceMetalLayer;
   WGPUSurfaceDescriptorFromWaylandSurface = TWGPUSurfaceSourceWaylandSurface;
   WGPUSurfaceDescriptorFromWindowsHWND = TWGPUSurfaceSourceWindowsHWND;
   WGPUSurfaceDescriptorFromXcbWindow = TWGPUSurfaceSourceXCBWindow;
   WGPUSurfaceDescriptorFromXlibWindow = TWGPUSurfaceSourceXlibWindow;

   TWGPUProcAdapterInfoFreeMembers = procedure(value: TWGPUAdapterInfo); cdecl;
   TWGPUProcAdapterPropertiesMemoryHeapsFreeMembers = procedure(value: TWGPUAdapterPropertiesMemoryHeaps); cdecl;
   TWGPUProcAdapterPropertiesSubgroupMatrixConfigsFreeMembers = procedure(value: TWGPUAdapterPropertiesSubgroupMatrixConfigs); cdecl;
   TWGPUProcCreateInstance = function(const descriptor: PWGPUInstanceDescriptor): TWGPUInstance; cdecl;
   TWGPUProcDawnDrmFormatCapabilitiesFreeMembers = procedure(value: TWGPUDawnDrmFormatCapabilities); cdecl;
   TWGPUProcGetInstanceCapabilities = function(capabilities: PWGPUInstanceCapabilities): TWGPUStatus; cdecl;
   TWGPUProcGetProcAddress = function(procName: TWGPUStringView): TWGPUProc; cdecl;
   TWGPUProcSharedBufferMemoryEndAccessStateFreeMembers = procedure(value: TWGPUSharedBufferMemoryEndAccessState); cdecl;
   TWGPUProcSharedTextureMemoryEndAccessStateFreeMembers = procedure(value: TWGPUSharedTextureMemoryEndAccessState); cdecl;
   TWGPUProcSupportedWGSLLanguageFeaturesFreeMembers = procedure(value: TWGPUSupportedWGSLLanguageFeatures); cdecl;
   TWGPUProcSupportedFeaturesFreeMembers = procedure(value: TWGPUSupportedFeatures); cdecl;
   TWGPUProcSurfaceCapabilitiesFreeMembers = procedure(value: TWGPUSurfaceCapabilities); cdecl;
   TWGPUProcAdapterCreateDevice = function(adapter: TWGPUAdapter; const descriptor: PWGPUDeviceDescriptor): TWGPUDevice; cdecl;
   TWGPUProcAdapterGetFeatures = procedure(adapter: TWGPUAdapter; features: PWGPUSupportedFeatures); cdecl;
   TWGPUProcAdapterGetFormatCapabilities = function(adapter: TWGPUAdapter; format: TWGPUTextureFormat; capabilities: PWGPUDawnFormatCapabilities): TWGPUStatus; cdecl;
   TWGPUProcAdapterGetInfo = function(adapter: TWGPUAdapter; info: PWGPUAdapterInfo): TWGPUStatus; cdecl;
   TWGPUProcAdapterGetInstance = function(adapter: TWGPUAdapter): TWGPUInstance; cdecl;
   TWGPUProcAdapterGetLimits = function(adapter: TWGPUAdapter; limits: PWGPULimits): TWGPUStatus; cdecl;
   TWGPUProcAdapterHasFeature = function(adapter: TWGPUAdapter; feature: TWGPUFeatureName): TWGPUBool; cdecl;
   TWGPUProcAdapterRequestDevice = function(adapter: TWGPUAdapter; const options: PWGPUDeviceDescriptor; callbackInfo: TWGPURequestDeviceCallbackInfo): TWGPUFuture; cdecl;
   TWGPUProcAdapterAddRef = procedure(adapter: TWGPUAdapter); cdecl;
   TWGPUProcAdapterRelease = procedure(adapter: TWGPUAdapter); cdecl;
   TWGPUProcBindGroupSetLabel = procedure(bindGroup: TWGPUBindGroup; &label: TWGPUStringView); cdecl;
   TWGPUProcBindGroupAddRef = procedure(bindGroup: TWGPUBindGroup); cdecl;
   TWGPUProcBindGroupRelease = procedure(bindGroup: TWGPUBindGroup); cdecl;
   TWGPUProcBindGroupLayoutSetLabel = procedure(bindGroupLayout: TWGPUBindGroupLayout; &label: TWGPUStringView); cdecl;
   TWGPUProcBindGroupLayoutAddRef = procedure(bindGroupLayout: TWGPUBindGroupLayout); cdecl;
   TWGPUProcBindGroupLayoutRelease = procedure(bindGroupLayout: TWGPUBindGroupLayout); cdecl;
   TWGPUProcBufferDestroy = procedure(buffer: TWGPUBuffer); cdecl;
   TWGPUProcBufferGetConstMappedRange = function(buffer: TWGPUBuffer; offset: NativeUInt; size: NativeUInt): Pointer; cdecl;
   TWGPUProcBufferGetMapState = function(buffer: TWGPUBuffer): TWGPUBufferMapState; cdecl;
   TWGPUProcBufferGetMappedRange = function(buffer: TWGPUBuffer; offset: NativeUInt; size: NativeUInt): Pointer; cdecl;
   TWGPUProcBufferGetSize = function(buffer: TWGPUBuffer): UInt64; cdecl;
   TWGPUProcBufferGetUsage = function(buffer: TWGPUBuffer): TWGPUBufferUsage; cdecl;
   TWGPUProcBufferMapAsync = function(buffer: TWGPUBuffer; mode: TWGPUMapMode; offset: NativeUInt; size: NativeUInt; callbackInfo: TWGPUBufferMapCallbackInfo): TWGPUFuture; cdecl;
   TWGPUProcBufferReadMappedRange = function(buffer: TWGPUBuffer; offset: NativeUInt; data: Pointer; size: NativeUInt): TWGPUStatus; cdecl;
   TWGPUProcBufferSetLabel = procedure(buffer: TWGPUBuffer; &label: TWGPUStringView); cdecl;
   TWGPUProcBufferUnmap = procedure(buffer: TWGPUBuffer); cdecl;
   TWGPUProcBufferWriteMappedRange = function(buffer: TWGPUBuffer; offset: NativeUInt; const data: Pointer; size: NativeUInt): TWGPUStatus; cdecl;
   TWGPUProcBufferAddRef = procedure(buffer: TWGPUBuffer); cdecl;
   TWGPUProcBufferRelease = procedure(buffer: TWGPUBuffer); cdecl;
   TWGPUProcCommandBufferSetLabel = procedure(commandBuffer: TWGPUCommandBuffer; &label: TWGPUStringView); cdecl;
   TWGPUProcCommandBufferAddRef = procedure(commandBuffer: TWGPUCommandBuffer); cdecl;
   TWGPUProcCommandBufferRelease = procedure(commandBuffer: TWGPUCommandBuffer); cdecl;
   TWGPUProcCommandEncoderBeginComputePass = function(commandEncoder: TWGPUCommandEncoder; const descriptor: PWGPUComputePassDescriptor): TWGPUComputePassEncoder; cdecl;
   TWGPUProcCommandEncoderBeginRenderPass = function(commandEncoder: TWGPUCommandEncoder; const descriptor: PWGPURenderPassDescriptor): TWGPURenderPassEncoder; cdecl;
   TWGPUProcCommandEncoderClearBuffer = procedure(commandEncoder: TWGPUCommandEncoder; buffer: TWGPUBuffer; offset: UInt64; size: UInt64); cdecl;
   TWGPUProcCommandEncoderCopyBufferToBuffer = procedure(commandEncoder: TWGPUCommandEncoder; source: TWGPUBuffer; sourceOffset: UInt64; destination: TWGPUBuffer; destinationOffset: UInt64; size: UInt64); cdecl;
   TWGPUProcCommandEncoderCopyBufferToTexture = procedure(commandEncoder: TWGPUCommandEncoder; const source: PWGPUTexelCopyBufferInfo; const destination: PWGPUTexelCopyTextureInfo; const copySize: PWGPUExtent3D); cdecl;
   TWGPUProcCommandEncoderCopyTextureToBuffer = procedure(commandEncoder: TWGPUCommandEncoder; const source: PWGPUTexelCopyTextureInfo; const destination: PWGPUTexelCopyBufferInfo; const copySize: PWGPUExtent3D); cdecl;
   TWGPUProcCommandEncoderCopyTextureToTexture = procedure(commandEncoder: TWGPUCommandEncoder; const source: PWGPUTexelCopyTextureInfo; const destination: PWGPUTexelCopyTextureInfo; const copySize: PWGPUExtent3D); cdecl;
   TWGPUProcCommandEncoderFinish = function(commandEncoder: TWGPUCommandEncoder; const descriptor: PWGPUCommandBufferDescriptor): TWGPUCommandBuffer; cdecl;
   TWGPUProcCommandEncoderInjectValidationError = procedure(commandEncoder: TWGPUCommandEncoder; const &message: TWGPUStringView); cdecl;
   TWGPUProcCommandEncoderInsertDebugMarker = procedure(commandEncoder: TWGPUCommandEncoder; markerLabel: TWGPUStringView); cdecl;
   TWGPUProcCommandEncoderPopDebugGroup = procedure(commandEncoder: TWGPUCommandEncoder); cdecl;
   TWGPUProcCommandEncoderPushDebugGroup = procedure(commandEncoder: TWGPUCommandEncoder; groupLabel: TWGPUStringView); cdecl;
   TWGPUProcCommandEncoderResolveQuerySet = procedure(commandEncoder: TWGPUCommandEncoder; querySet: TWGPUQuerySet; firstQuery: UInt32; queryCount: UInt32; destination: TWGPUBuffer; destinationOffset: UInt64); cdecl;
   TWGPUProcCommandEncoderSetLabel = procedure(commandEncoder: TWGPUCommandEncoder; &label: TWGPUStringView); cdecl;
   TWGPUProcCommandEncoderWriteBuffer = procedure(commandEncoder: TWGPUCommandEncoder; buffer: TWGPUBuffer; bufferOffset: UInt64; const data: PUInt8; size: UInt64); cdecl;
   TWGPUProcCommandEncoderWriteTimestamp = procedure(commandEncoder: TWGPUCommandEncoder; querySet: TWGPUQuerySet; queryIndex: UInt32); cdecl;
   TWGPUProcCommandEncoderAddRef = procedure(commandEncoder: TWGPUCommandEncoder); cdecl;
   TWGPUProcCommandEncoderRelease = procedure(commandEncoder: TWGPUCommandEncoder); cdecl;
   TWGPUProcComputePassEncoderDispatchWorkgroups = procedure(computePassEncoder: TWGPUComputePassEncoder; workgroupCountX: UInt32; workgroupCountY: UInt32; workgroupCountZ: UInt32); cdecl;
   TWGPUProcComputePassEncoderDispatchWorkgroupsIndirect = procedure(computePassEncoder: TWGPUComputePassEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64); cdecl;
   TWGPUProcComputePassEncoderEnd = procedure(computePassEncoder: TWGPUComputePassEncoder); cdecl;
   TWGPUProcComputePassEncoderInsertDebugMarker = procedure(computePassEncoder: TWGPUComputePassEncoder; markerLabel: TWGPUStringView); cdecl;
   TWGPUProcComputePassEncoderPopDebugGroup = procedure(computePassEncoder: TWGPUComputePassEncoder); cdecl;
   TWGPUProcComputePassEncoderPushDebugGroup = procedure(computePassEncoder: TWGPUComputePassEncoder; groupLabel: TWGPUStringView); cdecl;
   TWGPUProcComputePassEncoderSetBindGroup = procedure(computePassEncoder: TWGPUComputePassEncoder; groupIndex: UInt32; group: TWGPUBindGroup; dynamicOffsetCount: NativeUInt; const dynamicOffsets: PUInt32); cdecl;
   TWGPUProcComputePassEncoderSetImmediateData = procedure(computePassEncoder: TWGPUComputePassEncoder; offset: UInt32; const data: Pointer; size: NativeUInt); cdecl;
   TWGPUProcComputePassEncoderSetLabel = procedure(computePassEncoder: TWGPUComputePassEncoder; &label: TWGPUStringView); cdecl;
   TWGPUProcComputePassEncoderSetPipeline = procedure(computePassEncoder: TWGPUComputePassEncoder; pipeline: TWGPUComputePipeline); cdecl;
   TWGPUProcComputePassEncoderWriteTimestamp = procedure(computePassEncoder: TWGPUComputePassEncoder; querySet: TWGPUQuerySet; queryIndex: UInt32); cdecl;
   TWGPUProcComputePassEncoderAddRef = procedure(computePassEncoder: TWGPUComputePassEncoder); cdecl;
   TWGPUProcComputePassEncoderRelease = procedure(computePassEncoder: TWGPUComputePassEncoder); cdecl;
   TWGPUProcComputePipelineGetBindGroupLayout = function(computePipeline: TWGPUComputePipeline; groupIndex: UInt32): TWGPUBindGroupLayout; cdecl;
   TWGPUProcComputePipelineSetLabel = procedure(computePipeline: TWGPUComputePipeline; &label: TWGPUStringView); cdecl;
   TWGPUProcComputePipelineAddRef = procedure(computePipeline: TWGPUComputePipeline); cdecl;
   TWGPUProcComputePipelineRelease = procedure(computePipeline: TWGPUComputePipeline); cdecl;
   TWGPUProcDeviceCreateBindGroup = function(device: TWGPUDevice; const descriptor: PWGPUBindGroupDescriptor): TWGPUBindGroup; cdecl;
   TWGPUProcDeviceCreateBindGroupLayout = function(device: TWGPUDevice; const descriptor: PWGPUBindGroupLayoutDescriptor): TWGPUBindGroupLayout; cdecl;
   TWGPUProcDeviceCreateBuffer = function(device: TWGPUDevice; const descriptor: PWGPUBufferDescriptor): TWGPUBuffer; cdecl;
   TWGPUProcDeviceCreateCommandEncoder = function(device: TWGPUDevice; const descriptor: PWGPUCommandEncoderDescriptor): TWGPUCommandEncoder; cdecl;
   TWGPUProcDeviceCreateComputePipeline = function(device: TWGPUDevice; const descriptor: PWGPUComputePipelineDescriptor): TWGPUComputePipeline; cdecl;
   TWGPUProcDeviceCreateComputePipelineAsync = function(device: TWGPUDevice; const descriptor: PWGPUComputePipelineDescriptor; callbackInfo: TWGPUCreateComputePipelineAsyncCallbackInfo): TWGPUFuture; cdecl;
   TWGPUProcDeviceCreateErrorBuffer = function(device: TWGPUDevice; const descriptor: PWGPUBufferDescriptor): TWGPUBuffer; cdecl;
   TWGPUProcDeviceCreateErrorExternalTexture = function(device: TWGPUDevice): TWGPUExternalTexture; cdecl;
   TWGPUProcDeviceCreateErrorShaderModule = function(device: TWGPUDevice; const descriptor: PWGPUShaderModuleDescriptor; errorMessage: TWGPUStringView): TWGPUShaderModule; cdecl;
   TWGPUProcDeviceCreateErrorTexture = function(device: TWGPUDevice; const descriptor: PWGPUTextureDescriptor): TWGPUTexture; cdecl;
   TWGPUProcDeviceCreateExternalTexture = function(device: TWGPUDevice; const externalTextureDescriptor: PWGPUExternalTextureDescriptor): TWGPUExternalTexture; cdecl;
   TWGPUProcDeviceCreatePipelineLayout = function(device: TWGPUDevice; const descriptor: PWGPUPipelineLayoutDescriptor): TWGPUPipelineLayout; cdecl;
   TWGPUProcDeviceCreateQuerySet = function(device: TWGPUDevice; const descriptor: PWGPUQuerySetDescriptor): TWGPUQuerySet; cdecl;
   TWGPUProcDeviceCreateRenderBundleEncoder = function(device: TWGPUDevice; const descriptor: PWGPURenderBundleEncoderDescriptor): TWGPURenderBundleEncoder; cdecl;
   TWGPUProcDeviceCreateRenderPipeline = function(device: TWGPUDevice; const descriptor: PWGPURenderPipelineDescriptor): TWGPURenderPipeline; cdecl;
   TWGPUProcDeviceCreateRenderPipelineAsync = function(device: TWGPUDevice; const descriptor: PWGPURenderPipelineDescriptor; callbackInfo: TWGPUCreateRenderPipelineAsyncCallbackInfo): TWGPUFuture; cdecl;
   TWGPUProcDeviceCreateSampler = function(device: TWGPUDevice; const descriptor: PWGPUSamplerDescriptor): TWGPUSampler; cdecl;
   TWGPUProcDeviceCreateShaderModule = function(device: TWGPUDevice; const descriptor: PWGPUShaderModuleDescriptor): TWGPUShaderModule; cdecl;
   TWGPUProcDeviceCreateTexture = function(device: TWGPUDevice; const descriptor: PWGPUTextureDescriptor): TWGPUTexture; cdecl;
   TWGPUProcDeviceDestroy = procedure(device: TWGPUDevice); cdecl;
   TWGPUProcDeviceForceLoss = procedure(device: TWGPUDevice; &type: TWGPUDeviceLostReason; const &message: TWGPUStringView); cdecl;
   TWGPUProcDeviceGetAHardwareBufferProperties = function(device: TWGPUDevice; handle: Pointer; properties: PWGPUAHardwareBufferProperties): TWGPUStatus; cdecl;
   TWGPUProcDeviceGetAdapter = function(device: TWGPUDevice): TWGPUAdapter; cdecl;
   TWGPUProcDeviceGetAdapterInfo = function(device: TWGPUDevice; adapterInfo: PWGPUAdapterInfo): TWGPUStatus; cdecl;
   TWGPUProcDeviceGetFeatures = procedure(device: TWGPUDevice; features: PWGPUSupportedFeatures); cdecl;
   TWGPUProcDeviceGetLimits = function(device: TWGPUDevice; limits: PWGPULimits): TWGPUStatus; cdecl;
   TWGPUProcDeviceGetLostFuture = function(device: TWGPUDevice): TWGPUFuture; cdecl;
   TWGPUProcDeviceGetQueue = function(device: TWGPUDevice): TWGPUQueue; cdecl;
   TWGPUProcDeviceHasFeature = function(device: TWGPUDevice; feature: TWGPUFeatureName): TWGPUBool; cdecl;
   TWGPUProcDeviceImportSharedBufferMemory = function(device: TWGPUDevice; const descriptor: PWGPUSharedBufferMemoryDescriptor): TWGPUSharedBufferMemory; cdecl;
   TWGPUProcDeviceImportSharedFence = function(device: TWGPUDevice; const descriptor: PWGPUSharedFenceDescriptor): TWGPUSharedFence; cdecl;
   TWGPUProcDeviceImportSharedTextureMemory = function(device: TWGPUDevice; const descriptor: PWGPUSharedTextureMemoryDescriptor): TWGPUSharedTextureMemory; cdecl;
   TWGPUProcDeviceInjectError = procedure(device: TWGPUDevice; &type: TWGPUErrorType; const &message: TWGPUStringView); cdecl;
   TWGPUProcDevicePopErrorScope = function(device: TWGPUDevice; callbackInfo: TWGPUPopErrorScopeCallbackInfo): TWGPUFuture; cdecl;
   TWGPUProcDevicePushErrorScope = procedure(device: TWGPUDevice; filter: TWGPUErrorFilter); cdecl;
   TWGPUProcDeviceSetLabel = procedure(device: TWGPUDevice; &label: TWGPUStringView); cdecl;
   TWGPUProcDeviceSetLoggingCallback = procedure(device: TWGPUDevice; callbackInfo: TWGPULoggingCallbackInfo); cdecl;
   TWGPUProcDeviceTick = procedure(device: TWGPUDevice); cdecl;
   TWGPUProcDeviceValidateTextureDescriptor = procedure(device: TWGPUDevice; const descriptor: PWGPUTextureDescriptor); cdecl;
   TWGPUProcDeviceAddRef = procedure(device: TWGPUDevice); cdecl;
   TWGPUProcDeviceRelease = procedure(device: TWGPUDevice); cdecl;
   TWGPUProcExternalTextureDestroy = procedure(externalTexture: TWGPUExternalTexture); cdecl;
   TWGPUProcExternalTextureExpire = procedure(externalTexture: TWGPUExternalTexture); cdecl;
   TWGPUProcExternalTextureRefresh = procedure(externalTexture: TWGPUExternalTexture); cdecl;
   TWGPUProcExternalTextureSetLabel = procedure(externalTexture: TWGPUExternalTexture; &label: TWGPUStringView); cdecl;
   TWGPUProcExternalTextureAddRef = procedure(externalTexture: TWGPUExternalTexture); cdecl;
   TWGPUProcExternalTextureRelease = procedure(externalTexture: TWGPUExternalTexture); cdecl;
   TWGPUProcInstanceCreateSurface = function(instance: TWGPUInstance; const descriptor: PWGPUSurfaceDescriptor): TWGPUSurface; cdecl;
   TWGPUProcInstanceGetWGSLLanguageFeatures = function(instance: TWGPUInstance; features: PWGPUSupportedWGSLLanguageFeatures): TWGPUStatus; cdecl;
   TWGPUProcInstanceHasWGSLLanguageFeature = function(instance: TWGPUInstance; feature: TWGPUWGSLLanguageFeatureName): TWGPUBool; cdecl;
   TWGPUProcInstanceProcessEvents = procedure(instance: TWGPUInstance); cdecl;
   TWGPUProcInstanceRequestAdapter = function(instance: TWGPUInstance; const options: PWGPURequestAdapterOptions; callbackInfo: TWGPURequestAdapterCallbackInfo): TWGPUFuture; cdecl;
   TWGPUProcInstanceWaitAny = function(instance: TWGPUInstance; futureCount: NativeUInt; futures: PWGPUFutureWaitInfo; timeoutNS: UInt64): TWGPUWaitStatus; cdecl;
   TWGPUProcInstanceAddRef = procedure(instance: TWGPUInstance); cdecl;
   TWGPUProcInstanceRelease = procedure(instance: TWGPUInstance); cdecl;
   TWGPUProcPipelineLayoutSetLabel = procedure(pipelineLayout: TWGPUPipelineLayout; &label: TWGPUStringView); cdecl;
   TWGPUProcPipelineLayoutAddRef = procedure(pipelineLayout: TWGPUPipelineLayout); cdecl;
   TWGPUProcPipelineLayoutRelease = procedure(pipelineLayout: TWGPUPipelineLayout); cdecl;
   TWGPUProcQuerySetDestroy = procedure(querySet: TWGPUQuerySet); cdecl;
   TWGPUProcQuerySetGetCount = function(querySet: TWGPUQuerySet): UInt32; cdecl;
   TWGPUProcQuerySetGetType = function(querySet: TWGPUQuerySet): TWGPUQueryType; cdecl;
   TWGPUProcQuerySetSetLabel = procedure(querySet: TWGPUQuerySet; &label: TWGPUStringView); cdecl;
   TWGPUProcQuerySetAddRef = procedure(querySet: TWGPUQuerySet); cdecl;
   TWGPUProcQuerySetRelease = procedure(querySet: TWGPUQuerySet); cdecl;
   TWGPUProcQueueCopyExternalTextureForBrowser = procedure(queue: TWGPUQueue; const source: PWGPUImageCopyExternalTexture; const destination: PWGPUTexelCopyTextureInfo; const copySize: PWGPUExtent3D; const options: PWGPUCopyTextureForBrowserOptions); cdecl;
   TWGPUProcQueueCopyTextureForBrowser = procedure(queue: TWGPUQueue; const source: PWGPUTexelCopyTextureInfo; const destination: PWGPUTexelCopyTextureInfo; const copySize: PWGPUExtent3D; const options: PWGPUCopyTextureForBrowserOptions); cdecl;
   TWGPUProcQueueOnSubmittedWorkDone = function(queue: TWGPUQueue; callbackInfo: TWGPUQueueWorkDoneCallbackInfo): TWGPUFuture; cdecl;
   TWGPUProcQueueSetLabel = procedure(queue: TWGPUQueue; &label: TWGPUStringView); cdecl;
   TWGPUProcQueueSubmit = procedure(queue: TWGPUQueue; commandCount: NativeUInt; const commands: PWGPUCommandBuffer); cdecl;
   TWGPUProcQueueWriteBuffer = procedure(queue: TWGPUQueue; buffer: TWGPUBuffer; bufferOffset: UInt64; const data: Pointer; size: NativeUInt); cdecl;
   TWGPUProcQueueWriteTexture = procedure(queue: TWGPUQueue; const destination: PWGPUTexelCopyTextureInfo; const data: Pointer; dataSize: NativeUInt; const dataLayout: PWGPUTexelCopyBufferLayout; const writeSize: PWGPUExtent3D); cdecl;
   TWGPUProcQueueAddRef = procedure(queue: TWGPUQueue); cdecl;
   TWGPUProcQueueRelease = procedure(queue: TWGPUQueue); cdecl;
   TWGPUProcRenderBundleSetLabel = procedure(renderBundle: TWGPURenderBundle; &label: TWGPUStringView); cdecl;
   TWGPUProcRenderBundleAddRef = procedure(renderBundle: TWGPURenderBundle); cdecl;
   TWGPUProcRenderBundleRelease = procedure(renderBundle: TWGPURenderBundle); cdecl;
   TWGPUProcRenderBundleEncoderDraw = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; vertexCount: UInt32; instanceCount: UInt32; firstVertex: UInt32; firstInstance: UInt32); cdecl;
   TWGPUProcRenderBundleEncoderDrawIndexed = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; indexCount: UInt32; instanceCount: UInt32; firstIndex: UInt32; baseVertex: Int32; firstInstance: UInt32); cdecl;
   TWGPUProcRenderBundleEncoderDrawIndexedIndirect = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64); cdecl;
   TWGPUProcRenderBundleEncoderDrawIndirect = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64); cdecl;
   TWGPUProcRenderBundleEncoderFinish = function(renderBundleEncoder: TWGPURenderBundleEncoder; const descriptor: PWGPURenderBundleDescriptor): TWGPURenderBundle; cdecl;
   TWGPUProcRenderBundleEncoderInsertDebugMarker = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; markerLabel: TWGPUStringView); cdecl;
   TWGPUProcRenderBundleEncoderPopDebugGroup = procedure(renderBundleEncoder: TWGPURenderBundleEncoder); cdecl;
   TWGPUProcRenderBundleEncoderPushDebugGroup = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; groupLabel: TWGPUStringView); cdecl;
   TWGPUProcRenderBundleEncoderSetBindGroup = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; groupIndex: UInt32; group: TWGPUBindGroup; dynamicOffsetCount: NativeUInt; const dynamicOffsets: PUInt32); cdecl;
   TWGPUProcRenderBundleEncoderSetImmediateData = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; offset: UInt32; const data: Pointer; size: NativeUInt); cdecl;
   TWGPUProcRenderBundleEncoderSetIndexBuffer = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; buffer: TWGPUBuffer; format: TWGPUIndexFormat; offset: UInt64; size: UInt64); cdecl;
   TWGPUProcRenderBundleEncoderSetLabel = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; &label: TWGPUStringView); cdecl;
   TWGPUProcRenderBundleEncoderSetPipeline = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; pipeline: TWGPURenderPipeline); cdecl;
   TWGPUProcRenderBundleEncoderSetVertexBuffer = procedure(renderBundleEncoder: TWGPURenderBundleEncoder; slot: UInt32; buffer: TWGPUBuffer; offset: UInt64; size: UInt64); cdecl;
   TWGPUProcRenderBundleEncoderAddRef = procedure(renderBundleEncoder: TWGPURenderBundleEncoder); cdecl;
   TWGPUProcRenderBundleEncoderRelease = procedure(renderBundleEncoder: TWGPURenderBundleEncoder); cdecl;
   TWGPUProcRenderPassEncoderBeginOcclusionQuery = procedure(renderPassEncoder: TWGPURenderPassEncoder; queryIndex: UInt32); cdecl;
   TWGPUProcRenderPassEncoderDraw = procedure(renderPassEncoder: TWGPURenderPassEncoder; vertexCount: UInt32; instanceCount: UInt32; firstVertex: UInt32; firstInstance: UInt32); cdecl;
   TWGPUProcRenderPassEncoderDrawIndexed = procedure(renderPassEncoder: TWGPURenderPassEncoder; indexCount: UInt32; instanceCount: UInt32; firstIndex: UInt32; baseVertex: Int32; firstInstance: UInt32); cdecl;
   TWGPUProcRenderPassEncoderDrawIndexedIndirect = procedure(renderPassEncoder: TWGPURenderPassEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64); cdecl;
   TWGPUProcRenderPassEncoderDrawIndirect = procedure(renderPassEncoder: TWGPURenderPassEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64); cdecl;
   TWGPUProcRenderPassEncoderEnd = procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   TWGPUProcRenderPassEncoderEndOcclusionQuery = procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   TWGPUProcRenderPassEncoderExecuteBundles = procedure(renderPassEncoder: TWGPURenderPassEncoder; bundleCount: NativeUInt; const bundles: PWGPURenderBundle); cdecl;
   TWGPUProcRenderPassEncoderInsertDebugMarker = procedure(renderPassEncoder: TWGPURenderPassEncoder; markerLabel: TWGPUStringView); cdecl;
   TWGPUProcRenderPassEncoderMultiDrawIndexedIndirect = procedure(renderPassEncoder: TWGPURenderPassEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64; maxDrawCount: UInt32; drawCountBuffer: TWGPUBuffer; drawCountBufferOffset: UInt64); cdecl;
   TWGPUProcRenderPassEncoderMultiDrawIndirect = procedure(renderPassEncoder: TWGPURenderPassEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64; maxDrawCount: UInt32; drawCountBuffer: TWGPUBuffer; drawCountBufferOffset: UInt64); cdecl;
   TWGPUProcRenderPassEncoderPixelLocalStorageBarrier = procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   TWGPUProcRenderPassEncoderPopDebugGroup = procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   TWGPUProcRenderPassEncoderPushDebugGroup = procedure(renderPassEncoder: TWGPURenderPassEncoder; groupLabel: TWGPUStringView); cdecl;
   TWGPUProcRenderPassEncoderSetBindGroup = procedure(renderPassEncoder: TWGPURenderPassEncoder; groupIndex: UInt32; group: TWGPUBindGroup; dynamicOffsetCount: NativeUInt; const dynamicOffsets: PUInt32); cdecl;
   TWGPUProcRenderPassEncoderSetBlendConstant = procedure(renderPassEncoder: TWGPURenderPassEncoder; const color: PWGPUColor); cdecl;
   TWGPUProcRenderPassEncoderSetImmediateData = procedure(renderPassEncoder: TWGPURenderPassEncoder; offset: UInt32; const data: Pointer; size: NativeUInt); cdecl;
   TWGPUProcRenderPassEncoderSetIndexBuffer = procedure(renderPassEncoder: TWGPURenderPassEncoder; buffer: TWGPUBuffer; format: TWGPUIndexFormat; offset: UInt64; size: UInt64); cdecl;
   TWGPUProcRenderPassEncoderSetLabel = procedure(renderPassEncoder: TWGPURenderPassEncoder; &label: TWGPUStringView); cdecl;
   TWGPUProcRenderPassEncoderSetPipeline = procedure(renderPassEncoder: TWGPURenderPassEncoder; pipeline: TWGPURenderPipeline); cdecl;
   TWGPUProcRenderPassEncoderSetScissorRect = procedure(renderPassEncoder: TWGPURenderPassEncoder; x: UInt32; y: UInt32; width: UInt32; height: UInt32); cdecl;
   TWGPUProcRenderPassEncoderSetStencilReference = procedure(renderPassEncoder: TWGPURenderPassEncoder; reference: UInt32); cdecl;
   TWGPUProcRenderPassEncoderSetVertexBuffer = procedure(renderPassEncoder: TWGPURenderPassEncoder; slot: UInt32; buffer: TWGPUBuffer; offset: UInt64; size: UInt64); cdecl;
   TWGPUProcRenderPassEncoderSetViewport = procedure(renderPassEncoder: TWGPURenderPassEncoder; x: Single; y: Single; width: Single; height: Single; minDepth: Single; maxDepth: Single); cdecl;
   TWGPUProcRenderPassEncoderWriteTimestamp = procedure(renderPassEncoder: TWGPURenderPassEncoder; querySet: TWGPUQuerySet; queryIndex: UInt32); cdecl;
   TWGPUProcRenderPassEncoderAddRef = procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   TWGPUProcRenderPassEncoderRelease = procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   TWGPUProcRenderPipelineGetBindGroupLayout = function(renderPipeline: TWGPURenderPipeline; groupIndex: UInt32): TWGPUBindGroupLayout; cdecl;
   TWGPUProcRenderPipelineSetLabel = procedure(renderPipeline: TWGPURenderPipeline; &label: TWGPUStringView); cdecl;
   TWGPUProcRenderPipelineAddRef = procedure(renderPipeline: TWGPURenderPipeline); cdecl;
   TWGPUProcRenderPipelineRelease = procedure(renderPipeline: TWGPURenderPipeline); cdecl;
   TWGPUProcSamplerSetLabel = procedure(sampler: TWGPUSampler; &label: TWGPUStringView); cdecl;
   TWGPUProcSamplerAddRef = procedure(sampler: TWGPUSampler); cdecl;
   TWGPUProcSamplerRelease = procedure(sampler: TWGPUSampler); cdecl;
   TWGPUProcShaderModuleGetCompilationInfo = function(shaderModule: TWGPUShaderModule; callbackInfo: TWGPUCompilationInfoCallbackInfo): TWGPUFuture; cdecl;
   TWGPUProcShaderModuleSetLabel = procedure(shaderModule: TWGPUShaderModule; &label: TWGPUStringView); cdecl;
   TWGPUProcShaderModuleAddRef = procedure(shaderModule: TWGPUShaderModule); cdecl;
   TWGPUProcShaderModuleRelease = procedure(shaderModule: TWGPUShaderModule); cdecl;
   TWGPUProcSharedBufferMemoryBeginAccess = function(sharedBufferMemory: TWGPUSharedBufferMemory; buffer: TWGPUBuffer; const descriptor: PWGPUSharedBufferMemoryBeginAccessDescriptor): TWGPUStatus; cdecl;
   TWGPUProcSharedBufferMemoryCreateBuffer = function(sharedBufferMemory: TWGPUSharedBufferMemory; const descriptor: PWGPUBufferDescriptor): TWGPUBuffer; cdecl;
   TWGPUProcSharedBufferMemoryEndAccess = function(sharedBufferMemory: TWGPUSharedBufferMemory; buffer: TWGPUBuffer; descriptor: PWGPUSharedBufferMemoryEndAccessState): TWGPUStatus; cdecl;
   TWGPUProcSharedBufferMemoryGetProperties = function(sharedBufferMemory: TWGPUSharedBufferMemory; properties: PWGPUSharedBufferMemoryProperties): TWGPUStatus; cdecl;
   TWGPUProcSharedBufferMemoryIsDeviceLost = function(sharedBufferMemory: TWGPUSharedBufferMemory): TWGPUBool; cdecl;
   TWGPUProcSharedBufferMemorySetLabel = procedure(sharedBufferMemory: TWGPUSharedBufferMemory; &label: TWGPUStringView); cdecl;
   TWGPUProcSharedBufferMemoryAddRef = procedure(sharedBufferMemory: TWGPUSharedBufferMemory); cdecl;
   TWGPUProcSharedBufferMemoryRelease = procedure(sharedBufferMemory: TWGPUSharedBufferMemory); cdecl;
   TWGPUProcSharedFenceExportInfo = procedure(sharedFence: TWGPUSharedFence; info: PWGPUSharedFenceExportInfo); cdecl;
   TWGPUProcSharedFenceAddRef = procedure(sharedFence: TWGPUSharedFence); cdecl;
   TWGPUProcSharedFenceRelease = procedure(sharedFence: TWGPUSharedFence); cdecl;
   TWGPUProcSharedTextureMemoryBeginAccess = function(sharedTextureMemory: TWGPUSharedTextureMemory; texture: TWGPUTexture; const descriptor: PWGPUSharedTextureMemoryBeginAccessDescriptor): TWGPUStatus; cdecl;
   TWGPUProcSharedTextureMemoryCreateTexture = function(sharedTextureMemory: TWGPUSharedTextureMemory; const descriptor: PWGPUTextureDescriptor): TWGPUTexture; cdecl;
   TWGPUProcSharedTextureMemoryEndAccess = function(sharedTextureMemory: TWGPUSharedTextureMemory; texture: TWGPUTexture; descriptor: PWGPUSharedTextureMemoryEndAccessState): TWGPUStatus; cdecl;
   TWGPUProcSharedTextureMemoryGetProperties = function(sharedTextureMemory: TWGPUSharedTextureMemory; properties: PWGPUSharedTextureMemoryProperties): TWGPUStatus; cdecl;
   TWGPUProcSharedTextureMemoryIsDeviceLost = function(sharedTextureMemory: TWGPUSharedTextureMemory): TWGPUBool; cdecl;
   TWGPUProcSharedTextureMemorySetLabel = procedure(sharedTextureMemory: TWGPUSharedTextureMemory; &label: TWGPUStringView); cdecl;
   TWGPUProcSharedTextureMemoryAddRef = procedure(sharedTextureMemory: TWGPUSharedTextureMemory); cdecl;
   TWGPUProcSharedTextureMemoryRelease = procedure(sharedTextureMemory: TWGPUSharedTextureMemory); cdecl;
   TWGPUProcSurfaceConfigure = procedure(surface: TWGPUSurface; const config: PWGPUSurfaceConfiguration); cdecl;
   TWGPUProcSurfaceGetCapabilities = function(surface: TWGPUSurface; adapter: TWGPUAdapter; capabilities: PWGPUSurfaceCapabilities): TWGPUStatus; cdecl;
   TWGPUProcSurfaceGetCurrentTexture = procedure(surface: TWGPUSurface; surfaceTexture: PWGPUSurfaceTexture); cdecl;
   TWGPUProcSurfacePresent = procedure(surface: TWGPUSurface); cdecl;
   TWGPUProcSurfaceSetLabel = procedure(surface: TWGPUSurface; &label: TWGPUStringView); cdecl;
   TWGPUProcSurfaceUnconfigure = procedure(surface: TWGPUSurface); cdecl;
   TWGPUProcSurfaceAddRef = procedure(surface: TWGPUSurface); cdecl;
   TWGPUProcSurfaceRelease = procedure(surface: TWGPUSurface); cdecl;
   TWGPUProcTextureCreateErrorView = function(texture: TWGPUTexture; const descriptor: PWGPUTextureViewDescriptor): TWGPUTextureView; cdecl;
   TWGPUProcTextureCreateView = function(texture: TWGPUTexture; const descriptor: PWGPUTextureViewDescriptor): TWGPUTextureView; cdecl;
   TWGPUProcTextureDestroy = procedure(texture: TWGPUTexture); cdecl;
   TWGPUProcTextureGetDepthOrArrayLayers = function(texture: TWGPUTexture): UInt32; cdecl;
   TWGPUProcTextureGetDimension = function(texture: TWGPUTexture): TWGPUTextureDimension; cdecl;
   TWGPUProcTextureGetFormat = function(texture: TWGPUTexture): TWGPUTextureFormat; cdecl;
   TWGPUProcTextureGetHeight = function(texture: TWGPUTexture): UInt32; cdecl;
   TWGPUProcTextureGetMipLevelCount = function(texture: TWGPUTexture): UInt32; cdecl;
   TWGPUProcTextureGetSampleCount = function(texture: TWGPUTexture): UInt32; cdecl;
   TWGPUProcTextureGetUsage = function(texture: TWGPUTexture): TWGPUTextureUsage; cdecl;
   TWGPUProcTextureGetWidth = function(texture: TWGPUTexture): UInt32; cdecl;
   TWGPUProcTextureSetLabel = procedure(texture: TWGPUTexture; &label: TWGPUStringView); cdecl;
   TWGPUProcTextureAddRef = procedure(texture: TWGPUTexture); cdecl;
   TWGPUProcTextureRelease = procedure(texture: TWGPUTexture); cdecl;
   TWGPUProcTextureViewSetLabel = procedure(textureView: TWGPUTextureView; &label: TWGPUStringView); cdecl;
   TWGPUProcTextureViewAddRef = procedure(textureView: TWGPUTextureView); cdecl;
   TWGPUProcTextureViewRelease = procedure(textureView: TWGPUTextureView); cdecl;
const
   WGPUBufferUsage_None: TWGPUBufferUsage = $0000000000000000;
   WGPUBufferUsage_MapRead: TWGPUBufferUsage = $0000000000000001;
   WGPUBufferUsage_MapWrite: TWGPUBufferUsage = $0000000000000002;
   WGPUBufferUsage_CopySrc: TWGPUBufferUsage = $0000000000000004;
   WGPUBufferUsage_CopyDst: TWGPUBufferUsage = $0000000000000008;
   WGPUBufferUsage_Index: TWGPUBufferUsage = $0000000000000010;
   WGPUBufferUsage_Vertex: TWGPUBufferUsage = $0000000000000020;
   WGPUBufferUsage_Uniform: TWGPUBufferUsage = $0000000000000040;
   WGPUBufferUsage_Storage: TWGPUBufferUsage = $0000000000000080;
   WGPUBufferUsage_Indirect: TWGPUBufferUsage = $0000000000000100;
   WGPUBufferUsage_QueryResolve: TWGPUBufferUsage = $0000000000000200;
   WGPUColorWriteMask_None: TWGPUColorWriteMask = $0000000000000000;
   WGPUColorWriteMask_Red: TWGPUColorWriteMask = $0000000000000001;
   WGPUColorWriteMask_Green: TWGPUColorWriteMask = $0000000000000002;
   WGPUColorWriteMask_Blue: TWGPUColorWriteMask = $0000000000000004;
   WGPUColorWriteMask_Alpha: TWGPUColorWriteMask = $0000000000000008;
   WGPUColorWriteMask_All: TWGPUColorWriteMask = $000000000000000F;
   WGPUHeapProperty_None: TWGPUHeapProperty = $0000000000000000;
   WGPUHeapProperty_DeviceLocal: TWGPUHeapProperty = $0000000000000001;
   WGPUHeapProperty_HostVisible: TWGPUHeapProperty = $0000000000000002;
   WGPUHeapProperty_HostCoherent: TWGPUHeapProperty = $0000000000000004;
   WGPUHeapProperty_HostUncached: TWGPUHeapProperty = $0000000000000008;
   WGPUHeapProperty_HostCached: TWGPUHeapProperty = $0000000000000010;
   WGPUMapMode_None: TWGPUMapMode = $0000000000000000;
   WGPUMapMode_Read: TWGPUMapMode = $0000000000000001;
   WGPUMapMode_Write: TWGPUMapMode = $0000000000000002;
   WGPUShaderStage_None: TWGPUShaderStage = $0000000000000000;
   WGPUShaderStage_Vertex: TWGPUShaderStage = $0000000000000001;
   WGPUShaderStage_Fragment: TWGPUShaderStage = $0000000000000002;
   WGPUShaderStage_Compute: TWGPUShaderStage = $0000000000000004;
   WGPUTextureUsage_None: TWGPUTextureUsage = $0000000000000000;
   WGPUTextureUsage_CopySrc: TWGPUTextureUsage = $0000000000000001;
   WGPUTextureUsage_CopyDst: TWGPUTextureUsage = $0000000000000002;
   WGPUTextureUsage_TextureBinding: TWGPUTextureUsage = $0000000000000004;
   WGPUTextureUsage_StorageBinding: TWGPUTextureUsage = $0000000000000008;
   WGPUTextureUsage_RenderAttachment: TWGPUTextureUsage = $0000000000000010;
   WGPUTextureUsage_TransientAttachment: TWGPUTextureUsage = $0000000000000020;
   WGPUTextureUsage_StorageAttachment: TWGPUTextureUsage = $0000000000000040;

var
   wgpuAdapterInfoFreeMembers : procedure(value: TWGPUAdapterInfo); cdecl;
   wgpuAdapterPropertiesMemoryHeapsFreeMembers : procedure(value: TWGPUAdapterPropertiesMemoryHeaps); cdecl;
   wgpuAdapterPropertiesSubgroupMatrixConfigsFreeMembers : procedure(value: TWGPUAdapterPropertiesSubgroupMatrixConfigs); cdecl;
   wgpuCreateInstance : function(const descriptor: PWGPUInstanceDescriptor): TWGPUInstance; cdecl;
   wgpuDawnDrmFormatCapabilitiesFreeMembers : procedure(value: TWGPUDawnDrmFormatCapabilities); cdecl;
   wgpuGetInstanceCapabilities : function(capabilities: PWGPUInstanceCapabilities): TWGPUStatus; cdecl;
   wgpuGetProcAddress : function(procName: TWGPUStringView): TWGPUProc; cdecl;
   wgpuSharedBufferMemoryEndAccessStateFreeMembers : procedure(value: TWGPUSharedBufferMemoryEndAccessState); cdecl;
   wgpuSharedTextureMemoryEndAccessStateFreeMembers : procedure(value: TWGPUSharedTextureMemoryEndAccessState); cdecl;
   wgpuSupportedWGSLLanguageFeaturesFreeMembers : procedure(value: TWGPUSupportedWGSLLanguageFeatures); cdecl;
   wgpuSupportedFeaturesFreeMembers : procedure(value: TWGPUSupportedFeatures); cdecl;
   wgpuSurfaceCapabilitiesFreeMembers : procedure(value: TWGPUSurfaceCapabilities); cdecl;
   wgpuAdapterCreateDevice : function(adapter: TWGPUAdapter; const descriptor: PWGPUDeviceDescriptor): TWGPUDevice; cdecl;
   wgpuAdapterGetFeatures : procedure(adapter: TWGPUAdapter; features: PWGPUSupportedFeatures); cdecl;
   wgpuAdapterGetFormatCapabilities : function(adapter: TWGPUAdapter; format: TWGPUTextureFormat; capabilities: PWGPUDawnFormatCapabilities): TWGPUStatus; cdecl;
   wgpuAdapterGetInfo : function(adapter: TWGPUAdapter; info: PWGPUAdapterInfo): TWGPUStatus; cdecl;
   wgpuAdapterGetInstance : function(adapter: TWGPUAdapter): TWGPUInstance; cdecl;
   wgpuAdapterGetLimits : function(adapter: TWGPUAdapter; limits: PWGPULimits): TWGPUStatus; cdecl;
   wgpuAdapterHasFeature : function(adapter: TWGPUAdapter; feature: TWGPUFeatureName): TWGPUBool; cdecl;
   wgpuAdapterRequestDevice : function(adapter: TWGPUAdapter; const options: PWGPUDeviceDescriptor; callbackInfo: TWGPURequestDeviceCallbackInfo): TWGPUFuture; cdecl;
   wgpuAdapterAddRef : procedure(adapter: TWGPUAdapter); cdecl;
   wgpuAdapterRelease : procedure(adapter: TWGPUAdapter); cdecl;
   wgpuBindGroupSetLabel : procedure(bindGroup: TWGPUBindGroup; &label: TWGPUStringView); cdecl;
   wgpuBindGroupAddRef : procedure(bindGroup: TWGPUBindGroup); cdecl;
   wgpuBindGroupRelease : procedure(bindGroup: TWGPUBindGroup); cdecl;
   wgpuBindGroupLayoutSetLabel : procedure(bindGroupLayout: TWGPUBindGroupLayout; &label: TWGPUStringView); cdecl;
   wgpuBindGroupLayoutAddRef : procedure(bindGroupLayout: TWGPUBindGroupLayout); cdecl;
   wgpuBindGroupLayoutRelease : procedure(bindGroupLayout: TWGPUBindGroupLayout); cdecl;
   wgpuBufferDestroy : procedure(buffer: TWGPUBuffer); cdecl;
   wgpuBufferGetConstMappedRange : function(buffer: TWGPUBuffer; offset: NativeUInt; size: NativeUInt): Pointer; cdecl;
   wgpuBufferGetMapState : function(buffer: TWGPUBuffer): TWGPUBufferMapState; cdecl;
   wgpuBufferGetMappedRange : function(buffer: TWGPUBuffer; offset: NativeUInt; size: NativeUInt): Pointer; cdecl;
   wgpuBufferGetSize : function(buffer: TWGPUBuffer): UInt64; cdecl;
   wgpuBufferGetUsage : function(buffer: TWGPUBuffer): TWGPUBufferUsage; cdecl;
   wgpuBufferMapAsync : function(buffer: TWGPUBuffer; mode: TWGPUMapMode; offset: NativeUInt; size: NativeUInt; callbackInfo: TWGPUBufferMapCallbackInfo): TWGPUFuture; cdecl;
   wgpuBufferReadMappedRange : function(buffer: TWGPUBuffer; offset: NativeUInt; data: Pointer; size: NativeUInt): TWGPUStatus; cdecl;
   wgpuBufferSetLabel : procedure(buffer: TWGPUBuffer; &label: TWGPUStringView); cdecl;
   wgpuBufferUnmap : procedure(buffer: TWGPUBuffer); cdecl;
   wgpuBufferWriteMappedRange : function(buffer: TWGPUBuffer; offset: NativeUInt; const data: Pointer; size: NativeUInt): TWGPUStatus; cdecl;
   wgpuBufferAddRef : procedure(buffer: TWGPUBuffer); cdecl;
   wgpuBufferRelease : procedure(buffer: TWGPUBuffer); cdecl;
   wgpuCommandBufferSetLabel : procedure(commandBuffer: TWGPUCommandBuffer; &label: TWGPUStringView); cdecl;
   wgpuCommandBufferAddRef : procedure(commandBuffer: TWGPUCommandBuffer); cdecl;
   wgpuCommandBufferRelease : procedure(commandBuffer: TWGPUCommandBuffer); cdecl;
   wgpuCommandEncoderBeginComputePass : function(commandEncoder: TWGPUCommandEncoder; const descriptor: PWGPUComputePassDescriptor): TWGPUComputePassEncoder; cdecl;
   wgpuCommandEncoderBeginRenderPass : function(commandEncoder: TWGPUCommandEncoder; const descriptor: PWGPURenderPassDescriptor): TWGPURenderPassEncoder; cdecl;
   wgpuCommandEncoderClearBuffer : procedure(commandEncoder: TWGPUCommandEncoder; buffer: TWGPUBuffer; offset: UInt64; size: UInt64); cdecl;
   wgpuCommandEncoderCopyBufferToBuffer : procedure(commandEncoder: TWGPUCommandEncoder; source: TWGPUBuffer; sourceOffset: UInt64; destination: TWGPUBuffer; destinationOffset: UInt64; size: UInt64); cdecl;
   wgpuCommandEncoderCopyBufferToTexture : procedure(commandEncoder: TWGPUCommandEncoder; const source: PWGPUTexelCopyBufferInfo; const destination: PWGPUTexelCopyTextureInfo; const copySize: PWGPUExtent3D); cdecl;
   wgpuCommandEncoderCopyTextureToBuffer : procedure(commandEncoder: TWGPUCommandEncoder; const source: PWGPUTexelCopyTextureInfo; const destination: PWGPUTexelCopyBufferInfo; const copySize: PWGPUExtent3D); cdecl;
   wgpuCommandEncoderCopyTextureToTexture : procedure(commandEncoder: TWGPUCommandEncoder; const source: PWGPUTexelCopyTextureInfo; const destination: PWGPUTexelCopyTextureInfo; const copySize: PWGPUExtent3D); cdecl;
   wgpuCommandEncoderFinish : function(commandEncoder: TWGPUCommandEncoder; const descriptor: PWGPUCommandBufferDescriptor): TWGPUCommandBuffer; cdecl;
   wgpuCommandEncoderInjectValidationError : procedure(commandEncoder: TWGPUCommandEncoder; const &message: TWGPUStringView); cdecl;
   wgpuCommandEncoderInsertDebugMarker : procedure(commandEncoder: TWGPUCommandEncoder; markerLabel: TWGPUStringView); cdecl;
   wgpuCommandEncoderPopDebugGroup : procedure(commandEncoder: TWGPUCommandEncoder); cdecl;
   wgpuCommandEncoderPushDebugGroup : procedure(commandEncoder: TWGPUCommandEncoder; groupLabel: TWGPUStringView); cdecl;
   wgpuCommandEncoderResolveQuerySet : procedure(commandEncoder: TWGPUCommandEncoder; querySet: TWGPUQuerySet; firstQuery: UInt32; queryCount: UInt32; destination: TWGPUBuffer; destinationOffset: UInt64); cdecl;
   wgpuCommandEncoderSetLabel : procedure(commandEncoder: TWGPUCommandEncoder; &label: TWGPUStringView); cdecl;
   wgpuCommandEncoderWriteBuffer : procedure(commandEncoder: TWGPUCommandEncoder; buffer: TWGPUBuffer; bufferOffset: UInt64; const data: PUInt8; size: UInt64); cdecl;
   wgpuCommandEncoderWriteTimestamp : procedure(commandEncoder: TWGPUCommandEncoder; querySet: TWGPUQuerySet; queryIndex: UInt32); cdecl;
   wgpuCommandEncoderAddRef : procedure(commandEncoder: TWGPUCommandEncoder); cdecl;
   wgpuCommandEncoderRelease : procedure(commandEncoder: TWGPUCommandEncoder); cdecl;
   wgpuComputePassEncoderDispatchWorkgroups : procedure(computePassEncoder: TWGPUComputePassEncoder; workgroupCountX: UInt32; workgroupCountY: UInt32; workgroupCountZ: UInt32); cdecl;
   wgpuComputePassEncoderDispatchWorkgroupsIndirect : procedure(computePassEncoder: TWGPUComputePassEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64); cdecl;
   wgpuComputePassEncoderEnd : procedure(computePassEncoder: TWGPUComputePassEncoder); cdecl;
   wgpuComputePassEncoderInsertDebugMarker : procedure(computePassEncoder: TWGPUComputePassEncoder; markerLabel: TWGPUStringView); cdecl;
   wgpuComputePassEncoderPopDebugGroup : procedure(computePassEncoder: TWGPUComputePassEncoder); cdecl;
   wgpuComputePassEncoderPushDebugGroup : procedure(computePassEncoder: TWGPUComputePassEncoder; groupLabel: TWGPUStringView); cdecl;
   wgpuComputePassEncoderSetBindGroup : procedure(computePassEncoder: TWGPUComputePassEncoder; groupIndex: UInt32; group: TWGPUBindGroup; dynamicOffsetCount: NativeUInt; const dynamicOffsets: PUInt32); cdecl;
   wgpuComputePassEncoderSetImmediateData : procedure(computePassEncoder: TWGPUComputePassEncoder; offset: UInt32; const data: Pointer; size: NativeUInt); cdecl;
   wgpuComputePassEncoderSetLabel : procedure(computePassEncoder: TWGPUComputePassEncoder; &label: TWGPUStringView); cdecl;
   wgpuComputePassEncoderSetPipeline : procedure(computePassEncoder: TWGPUComputePassEncoder; pipeline: TWGPUComputePipeline); cdecl;
   wgpuComputePassEncoderWriteTimestamp : procedure(computePassEncoder: TWGPUComputePassEncoder; querySet: TWGPUQuerySet; queryIndex: UInt32); cdecl;
   wgpuComputePassEncoderAddRef : procedure(computePassEncoder: TWGPUComputePassEncoder); cdecl;
   wgpuComputePassEncoderRelease : procedure(computePassEncoder: TWGPUComputePassEncoder); cdecl;
   wgpuComputePipelineGetBindGroupLayout : function(computePipeline: TWGPUComputePipeline; groupIndex: UInt32): TWGPUBindGroupLayout; cdecl;
   wgpuComputePipelineSetLabel : procedure(computePipeline: TWGPUComputePipeline; &label: TWGPUStringView); cdecl;
   wgpuComputePipelineAddRef : procedure(computePipeline: TWGPUComputePipeline); cdecl;
   wgpuComputePipelineRelease : procedure(computePipeline: TWGPUComputePipeline); cdecl;
   wgpuDeviceCreateBindGroup : function(device: TWGPUDevice; const descriptor: PWGPUBindGroupDescriptor): TWGPUBindGroup; cdecl;
   wgpuDeviceCreateBindGroupLayout : function(device: TWGPUDevice; const descriptor: PWGPUBindGroupLayoutDescriptor): TWGPUBindGroupLayout; cdecl;
   wgpuDeviceCreateBuffer : function(device: TWGPUDevice; const descriptor: PWGPUBufferDescriptor): TWGPUBuffer; cdecl;
   wgpuDeviceCreateCommandEncoder : function(device: TWGPUDevice; const descriptor: PWGPUCommandEncoderDescriptor): TWGPUCommandEncoder; cdecl;
   wgpuDeviceCreateComputePipeline : function(device: TWGPUDevice; const descriptor: PWGPUComputePipelineDescriptor): TWGPUComputePipeline; cdecl;
   wgpuDeviceCreateComputePipelineAsync : function(device: TWGPUDevice; const descriptor: PWGPUComputePipelineDescriptor; callbackInfo: TWGPUCreateComputePipelineAsyncCallbackInfo): TWGPUFuture; cdecl;
   wgpuDeviceCreateErrorBuffer : function(device: TWGPUDevice; const descriptor: PWGPUBufferDescriptor): TWGPUBuffer; cdecl;
   wgpuDeviceCreateErrorExternalTexture : function(device: TWGPUDevice): TWGPUExternalTexture; cdecl;
   wgpuDeviceCreateErrorShaderModule : function(device: TWGPUDevice; const descriptor: PWGPUShaderModuleDescriptor; errorMessage: TWGPUStringView): TWGPUShaderModule; cdecl;
   wgpuDeviceCreateErrorTexture : function(device: TWGPUDevice; const descriptor: PWGPUTextureDescriptor): TWGPUTexture; cdecl;
   wgpuDeviceCreateExternalTexture : function(device: TWGPUDevice; const externalTextureDescriptor: PWGPUExternalTextureDescriptor): TWGPUExternalTexture; cdecl;
   wgpuDeviceCreatePipelineLayout : function(device: TWGPUDevice; const descriptor: PWGPUPipelineLayoutDescriptor): TWGPUPipelineLayout; cdecl;
   wgpuDeviceCreateQuerySet : function(device: TWGPUDevice; const descriptor: PWGPUQuerySetDescriptor): TWGPUQuerySet; cdecl;
   wgpuDeviceCreateRenderBundleEncoder : function(device: TWGPUDevice; const descriptor: PWGPURenderBundleEncoderDescriptor): TWGPURenderBundleEncoder; cdecl;
   wgpuDeviceCreateRenderPipeline : function(device: TWGPUDevice; const descriptor: PWGPURenderPipelineDescriptor): TWGPURenderPipeline; cdecl;
   wgpuDeviceCreateRenderPipelineAsync : function(device: TWGPUDevice; const descriptor: PWGPURenderPipelineDescriptor; callbackInfo: TWGPUCreateRenderPipelineAsyncCallbackInfo): TWGPUFuture; cdecl;
   wgpuDeviceCreateSampler : function(device: TWGPUDevice; const descriptor: PWGPUSamplerDescriptor): TWGPUSampler; cdecl;
   wgpuDeviceCreateShaderModule : function(device: TWGPUDevice; const descriptor: PWGPUShaderModuleDescriptor): TWGPUShaderModule; cdecl;
   wgpuDeviceCreateTexture : function(device: TWGPUDevice; const descriptor: PWGPUTextureDescriptor): TWGPUTexture; cdecl;
   wgpuDeviceDestroy : procedure(device: TWGPUDevice); cdecl;
   wgpuDeviceForceLoss : procedure(device: TWGPUDevice; &type: TWGPUDeviceLostReason; const &message: TWGPUStringView); cdecl;
   wgpuDeviceGetAHardwareBufferProperties : function(device: TWGPUDevice; handle: Pointer; properties: PWGPUAHardwareBufferProperties): TWGPUStatus; cdecl;
   wgpuDeviceGetAdapter : function(device: TWGPUDevice): TWGPUAdapter; cdecl;
   wgpuDeviceGetAdapterInfo : function(device: TWGPUDevice; adapterInfo: PWGPUAdapterInfo): TWGPUStatus; cdecl;
   wgpuDeviceGetFeatures : procedure(device: TWGPUDevice; features: PWGPUSupportedFeatures); cdecl;
   wgpuDeviceGetLimits : function(device: TWGPUDevice; limits: PWGPULimits): TWGPUStatus; cdecl;
   wgpuDeviceGetLostFuture : function(device: TWGPUDevice): TWGPUFuture; cdecl;
   wgpuDeviceGetQueue : function(device: TWGPUDevice): TWGPUQueue; cdecl;
   wgpuDeviceHasFeature : function(device: TWGPUDevice; feature: TWGPUFeatureName): TWGPUBool; cdecl;
   wgpuDeviceImportSharedBufferMemory : function(device: TWGPUDevice; const descriptor: PWGPUSharedBufferMemoryDescriptor): TWGPUSharedBufferMemory; cdecl;
   wgpuDeviceImportSharedFence : function(device: TWGPUDevice; const descriptor: PWGPUSharedFenceDescriptor): TWGPUSharedFence; cdecl;
   wgpuDeviceImportSharedTextureMemory : function(device: TWGPUDevice; const descriptor: PWGPUSharedTextureMemoryDescriptor): TWGPUSharedTextureMemory; cdecl;
   wgpuDeviceInjectError : procedure(device: TWGPUDevice; &type: TWGPUErrorType; const &message: TWGPUStringView); cdecl;
   wgpuDevicePopErrorScope : function(device: TWGPUDevice; callbackInfo: TWGPUPopErrorScopeCallbackInfo): TWGPUFuture; cdecl;
   wgpuDevicePushErrorScope : procedure(device: TWGPUDevice; filter: TWGPUErrorFilter); cdecl;
   wgpuDeviceSetLabel : procedure(device: TWGPUDevice; &label: TWGPUStringView); cdecl;
   wgpuDeviceSetLoggingCallback : procedure(device: TWGPUDevice; callbackInfo: TWGPULoggingCallbackInfo); cdecl;
   wgpuDeviceTick : procedure(device: TWGPUDevice); cdecl;
   wgpuDeviceValidateTextureDescriptor : procedure(device: TWGPUDevice; const descriptor: PWGPUTextureDescriptor); cdecl;
   wgpuDeviceAddRef : procedure(device: TWGPUDevice); cdecl;
   wgpuDeviceRelease : procedure(device: TWGPUDevice); cdecl;
   wgpuExternalTextureDestroy : procedure(externalTexture: TWGPUExternalTexture); cdecl;
   wgpuExternalTextureExpire : procedure(externalTexture: TWGPUExternalTexture); cdecl;
   wgpuExternalTextureRefresh : procedure(externalTexture: TWGPUExternalTexture); cdecl;
   wgpuExternalTextureSetLabel : procedure(externalTexture: TWGPUExternalTexture; &label: TWGPUStringView); cdecl;
   wgpuExternalTextureAddRef : procedure(externalTexture: TWGPUExternalTexture); cdecl;
   wgpuExternalTextureRelease : procedure(externalTexture: TWGPUExternalTexture); cdecl;
   wgpuInstanceCreateSurface : function(instance: TWGPUInstance; const descriptor: PWGPUSurfaceDescriptor): TWGPUSurface; cdecl;
   wgpuInstanceGetWGSLLanguageFeatures : function(instance: TWGPUInstance; features: PWGPUSupportedWGSLLanguageFeatures): TWGPUStatus; cdecl;
   wgpuInstanceHasWGSLLanguageFeature : function(instance: TWGPUInstance; feature: TWGPUWGSLLanguageFeatureName): TWGPUBool; cdecl;
   wgpuInstanceProcessEvents : procedure(instance: TWGPUInstance); cdecl;
   wgpuInstanceRequestAdapter : function(instance: TWGPUInstance; const options: PWGPURequestAdapterOptions; callbackInfo: TWGPURequestAdapterCallbackInfo): TWGPUFuture; cdecl;
   wgpuInstanceWaitAny : function(instance: TWGPUInstance; futureCount: NativeUInt; futures: PWGPUFutureWaitInfo; timeoutNS: UInt64): TWGPUWaitStatus; cdecl;
   wgpuInstanceAddRef : procedure(instance: TWGPUInstance); cdecl;
   wgpuInstanceRelease : procedure(instance: TWGPUInstance); cdecl;
   wgpuPipelineLayoutSetLabel : procedure(pipelineLayout: TWGPUPipelineLayout; &label: TWGPUStringView); cdecl;
   wgpuPipelineLayoutAddRef : procedure(pipelineLayout: TWGPUPipelineLayout); cdecl;
   wgpuPipelineLayoutRelease : procedure(pipelineLayout: TWGPUPipelineLayout); cdecl;
   wgpuQuerySetDestroy : procedure(querySet: TWGPUQuerySet); cdecl;
   wgpuQuerySetGetCount : function(querySet: TWGPUQuerySet): UInt32; cdecl;
   wgpuQuerySetGetType : function(querySet: TWGPUQuerySet): TWGPUQueryType; cdecl;
   wgpuQuerySetSetLabel : procedure(querySet: TWGPUQuerySet; &label: TWGPUStringView); cdecl;
   wgpuQuerySetAddRef : procedure(querySet: TWGPUQuerySet); cdecl;
   wgpuQuerySetRelease : procedure(querySet: TWGPUQuerySet); cdecl;
   wgpuQueueCopyExternalTextureForBrowser : procedure(queue: TWGPUQueue; const source: PWGPUImageCopyExternalTexture; const destination: PWGPUTexelCopyTextureInfo; const copySize: PWGPUExtent3D; const options: PWGPUCopyTextureForBrowserOptions); cdecl;
   wgpuQueueCopyTextureForBrowser : procedure(queue: TWGPUQueue; const source: PWGPUTexelCopyTextureInfo; const destination: PWGPUTexelCopyTextureInfo; const copySize: PWGPUExtent3D; const options: PWGPUCopyTextureForBrowserOptions); cdecl;
   wgpuQueueOnSubmittedWorkDone : function(queue: TWGPUQueue; callbackInfo: TWGPUQueueWorkDoneCallbackInfo): TWGPUFuture; cdecl;
   wgpuQueueSetLabel : procedure(queue: TWGPUQueue; &label: TWGPUStringView); cdecl;
   wgpuQueueSubmit : procedure(queue: TWGPUQueue; commandCount: NativeUInt; const commands: PWGPUCommandBuffer); cdecl;
   wgpuQueueWriteBuffer : procedure(queue: TWGPUQueue; buffer: TWGPUBuffer; bufferOffset: UInt64; const data: Pointer; size: NativeUInt); cdecl;
   wgpuQueueWriteTexture : procedure(queue: TWGPUQueue; const destination: PWGPUTexelCopyTextureInfo; const data: Pointer; dataSize: NativeUInt; const dataLayout: PWGPUTexelCopyBufferLayout; const writeSize: PWGPUExtent3D); cdecl;
   wgpuQueueAddRef : procedure(queue: TWGPUQueue); cdecl;
   wgpuQueueRelease : procedure(queue: TWGPUQueue); cdecl;
   wgpuRenderBundleSetLabel : procedure(renderBundle: TWGPURenderBundle; &label: TWGPUStringView); cdecl;
   wgpuRenderBundleAddRef : procedure(renderBundle: TWGPURenderBundle); cdecl;
   wgpuRenderBundleRelease : procedure(renderBundle: TWGPURenderBundle); cdecl;
   wgpuRenderBundleEncoderDraw : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; vertexCount: UInt32; instanceCount: UInt32; firstVertex: UInt32; firstInstance: UInt32); cdecl;
   wgpuRenderBundleEncoderDrawIndexed : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; indexCount: UInt32; instanceCount: UInt32; firstIndex: UInt32; baseVertex: Int32; firstInstance: UInt32); cdecl;
   wgpuRenderBundleEncoderDrawIndexedIndirect : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64); cdecl;
   wgpuRenderBundleEncoderDrawIndirect : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64); cdecl;
   wgpuRenderBundleEncoderFinish : function(renderBundleEncoder: TWGPURenderBundleEncoder; const descriptor: PWGPURenderBundleDescriptor): TWGPURenderBundle; cdecl;
   wgpuRenderBundleEncoderInsertDebugMarker : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; markerLabel: TWGPUStringView); cdecl;
   wgpuRenderBundleEncoderPopDebugGroup : procedure(renderBundleEncoder: TWGPURenderBundleEncoder); cdecl;
   wgpuRenderBundleEncoderPushDebugGroup : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; groupLabel: TWGPUStringView); cdecl;
   wgpuRenderBundleEncoderSetBindGroup : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; groupIndex: UInt32; group: TWGPUBindGroup; dynamicOffsetCount: NativeUInt; const dynamicOffsets: PUInt32); cdecl;
   wgpuRenderBundleEncoderSetImmediateData : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; offset: UInt32; const data: Pointer; size: NativeUInt); cdecl;
   wgpuRenderBundleEncoderSetIndexBuffer : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; buffer: TWGPUBuffer; format: TWGPUIndexFormat; offset: UInt64; size: UInt64); cdecl;
   wgpuRenderBundleEncoderSetLabel : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; &label: TWGPUStringView); cdecl;
   wgpuRenderBundleEncoderSetPipeline : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; pipeline: TWGPURenderPipeline); cdecl;
   wgpuRenderBundleEncoderSetVertexBuffer : procedure(renderBundleEncoder: TWGPURenderBundleEncoder; slot: UInt32; buffer: TWGPUBuffer; offset: UInt64; size: UInt64); cdecl;
   wgpuRenderBundleEncoderAddRef : procedure(renderBundleEncoder: TWGPURenderBundleEncoder); cdecl;
   wgpuRenderBundleEncoderRelease : procedure(renderBundleEncoder: TWGPURenderBundleEncoder); cdecl;
   wgpuRenderPassEncoderBeginOcclusionQuery : procedure(renderPassEncoder: TWGPURenderPassEncoder; queryIndex: UInt32); cdecl;
   wgpuRenderPassEncoderDraw : procedure(renderPassEncoder: TWGPURenderPassEncoder; vertexCount: UInt32; instanceCount: UInt32; firstVertex: UInt32; firstInstance: UInt32); cdecl;
   wgpuRenderPassEncoderDrawIndexed : procedure(renderPassEncoder: TWGPURenderPassEncoder; indexCount: UInt32; instanceCount: UInt32; firstIndex: UInt32; baseVertex: Int32; firstInstance: UInt32); cdecl;
   wgpuRenderPassEncoderDrawIndexedIndirect : procedure(renderPassEncoder: TWGPURenderPassEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64); cdecl;
   wgpuRenderPassEncoderDrawIndirect : procedure(renderPassEncoder: TWGPURenderPassEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64); cdecl;
   wgpuRenderPassEncoderEnd : procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   wgpuRenderPassEncoderEndOcclusionQuery : procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   wgpuRenderPassEncoderExecuteBundles : procedure(renderPassEncoder: TWGPURenderPassEncoder; bundleCount: NativeUInt; const bundles: PWGPURenderBundle); cdecl;
   wgpuRenderPassEncoderInsertDebugMarker : procedure(renderPassEncoder: TWGPURenderPassEncoder; markerLabel: TWGPUStringView); cdecl;
   wgpuRenderPassEncoderMultiDrawIndexedIndirect : procedure(renderPassEncoder: TWGPURenderPassEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64; maxDrawCount: UInt32; drawCountBuffer: TWGPUBuffer; drawCountBufferOffset: UInt64); cdecl;
   wgpuRenderPassEncoderMultiDrawIndirect : procedure(renderPassEncoder: TWGPURenderPassEncoder; indirectBuffer: TWGPUBuffer; indirectOffset: UInt64; maxDrawCount: UInt32; drawCountBuffer: TWGPUBuffer; drawCountBufferOffset: UInt64); cdecl;
   wgpuRenderPassEncoderPixelLocalStorageBarrier : procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   wgpuRenderPassEncoderPopDebugGroup : procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   wgpuRenderPassEncoderPushDebugGroup : procedure(renderPassEncoder: TWGPURenderPassEncoder; groupLabel: TWGPUStringView); cdecl;
   wgpuRenderPassEncoderSetBindGroup : procedure(renderPassEncoder: TWGPURenderPassEncoder; groupIndex: UInt32; group: TWGPUBindGroup; dynamicOffsetCount: NativeUInt; const dynamicOffsets: PUInt32); cdecl;
   wgpuRenderPassEncoderSetBlendConstant : procedure(renderPassEncoder: TWGPURenderPassEncoder; const color: PWGPUColor); cdecl;
   wgpuRenderPassEncoderSetImmediateData : procedure(renderPassEncoder: TWGPURenderPassEncoder; offset: UInt32; const data: Pointer; size: NativeUInt); cdecl;
   wgpuRenderPassEncoderSetIndexBuffer : procedure(renderPassEncoder: TWGPURenderPassEncoder; buffer: TWGPUBuffer; format: TWGPUIndexFormat; offset: UInt64; size: UInt64); cdecl;
   wgpuRenderPassEncoderSetLabel : procedure(renderPassEncoder: TWGPURenderPassEncoder; &label: TWGPUStringView); cdecl;
   wgpuRenderPassEncoderSetPipeline : procedure(renderPassEncoder: TWGPURenderPassEncoder; pipeline: TWGPURenderPipeline); cdecl;
   wgpuRenderPassEncoderSetScissorRect : procedure(renderPassEncoder: TWGPURenderPassEncoder; x: UInt32; y: UInt32; width: UInt32; height: UInt32); cdecl;
   wgpuRenderPassEncoderSetStencilReference : procedure(renderPassEncoder: TWGPURenderPassEncoder; reference: UInt32); cdecl;
   wgpuRenderPassEncoderSetVertexBuffer : procedure(renderPassEncoder: TWGPURenderPassEncoder; slot: UInt32; buffer: TWGPUBuffer; offset: UInt64; size: UInt64); cdecl;
   wgpuRenderPassEncoderSetViewport : procedure(renderPassEncoder: TWGPURenderPassEncoder; x: Single; y: Single; width: Single; height: Single; minDepth: Single; maxDepth: Single); cdecl;
   wgpuRenderPassEncoderWriteTimestamp : procedure(renderPassEncoder: TWGPURenderPassEncoder; querySet: TWGPUQuerySet; queryIndex: UInt32); cdecl;
   wgpuRenderPassEncoderAddRef : procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   wgpuRenderPassEncoderRelease : procedure(renderPassEncoder: TWGPURenderPassEncoder); cdecl;
   wgpuRenderPipelineGetBindGroupLayout : function(renderPipeline: TWGPURenderPipeline; groupIndex: UInt32): TWGPUBindGroupLayout; cdecl;
   wgpuRenderPipelineSetLabel : procedure(renderPipeline: TWGPURenderPipeline; &label: TWGPUStringView); cdecl;
   wgpuRenderPipelineAddRef : procedure(renderPipeline: TWGPURenderPipeline); cdecl;
   wgpuRenderPipelineRelease : procedure(renderPipeline: TWGPURenderPipeline); cdecl;
   wgpuSamplerSetLabel : procedure(sampler: TWGPUSampler; &label: TWGPUStringView); cdecl;
   wgpuSamplerAddRef : procedure(sampler: TWGPUSampler); cdecl;
   wgpuSamplerRelease : procedure(sampler: TWGPUSampler); cdecl;
   wgpuShaderModuleGetCompilationInfo : function(shaderModule: TWGPUShaderModule; callbackInfo: TWGPUCompilationInfoCallbackInfo): TWGPUFuture; cdecl;
   wgpuShaderModuleSetLabel : procedure(shaderModule: TWGPUShaderModule; &label: TWGPUStringView); cdecl;
   wgpuShaderModuleAddRef : procedure(shaderModule: TWGPUShaderModule); cdecl;
   wgpuShaderModuleRelease : procedure(shaderModule: TWGPUShaderModule); cdecl;
   wgpuSharedBufferMemoryBeginAccess : function(sharedBufferMemory: TWGPUSharedBufferMemory; buffer: TWGPUBuffer; const descriptor: PWGPUSharedBufferMemoryBeginAccessDescriptor): TWGPUStatus; cdecl;
   wgpuSharedBufferMemoryCreateBuffer : function(sharedBufferMemory: TWGPUSharedBufferMemory; const descriptor: PWGPUBufferDescriptor): TWGPUBuffer; cdecl;
   wgpuSharedBufferMemoryEndAccess : function(sharedBufferMemory: TWGPUSharedBufferMemory; buffer: TWGPUBuffer; descriptor: PWGPUSharedBufferMemoryEndAccessState): TWGPUStatus; cdecl;
   wgpuSharedBufferMemoryGetProperties : function(sharedBufferMemory: TWGPUSharedBufferMemory; properties: PWGPUSharedBufferMemoryProperties): TWGPUStatus; cdecl;
   wgpuSharedBufferMemoryIsDeviceLost : function(sharedBufferMemory: TWGPUSharedBufferMemory): TWGPUBool; cdecl;
   wgpuSharedBufferMemorySetLabel : procedure(sharedBufferMemory: TWGPUSharedBufferMemory; &label: TWGPUStringView); cdecl;
   wgpuSharedBufferMemoryAddRef : procedure(sharedBufferMemory: TWGPUSharedBufferMemory); cdecl;
   wgpuSharedBufferMemoryRelease : procedure(sharedBufferMemory: TWGPUSharedBufferMemory); cdecl;
   wgpuSharedFenceExportInfo : procedure(sharedFence: TWGPUSharedFence; info: PWGPUSharedFenceExportInfo); cdecl;
   wgpuSharedFenceAddRef : procedure(sharedFence: TWGPUSharedFence); cdecl;
   wgpuSharedFenceRelease : procedure(sharedFence: TWGPUSharedFence); cdecl;
   wgpuSharedTextureMemoryBeginAccess : function(sharedTextureMemory: TWGPUSharedTextureMemory; texture: TWGPUTexture; const descriptor: PWGPUSharedTextureMemoryBeginAccessDescriptor): TWGPUStatus; cdecl;
   wgpuSharedTextureMemoryCreateTexture : function(sharedTextureMemory: TWGPUSharedTextureMemory; const descriptor: PWGPUTextureDescriptor): TWGPUTexture; cdecl;
   wgpuSharedTextureMemoryEndAccess : function(sharedTextureMemory: TWGPUSharedTextureMemory; texture: TWGPUTexture; descriptor: PWGPUSharedTextureMemoryEndAccessState): TWGPUStatus; cdecl;
   wgpuSharedTextureMemoryGetProperties : function(sharedTextureMemory: TWGPUSharedTextureMemory; properties: PWGPUSharedTextureMemoryProperties): TWGPUStatus; cdecl;
   wgpuSharedTextureMemoryIsDeviceLost : function(sharedTextureMemory: TWGPUSharedTextureMemory): TWGPUBool; cdecl;
   wgpuSharedTextureMemorySetLabel : procedure(sharedTextureMemory: TWGPUSharedTextureMemory; &label: TWGPUStringView); cdecl;
   wgpuSharedTextureMemoryAddRef : procedure(sharedTextureMemory: TWGPUSharedTextureMemory); cdecl;
   wgpuSharedTextureMemoryRelease : procedure(sharedTextureMemory: TWGPUSharedTextureMemory); cdecl;
   wgpuSurfaceConfigure : procedure(surface: TWGPUSurface; const config: PWGPUSurfaceConfiguration); cdecl;
   wgpuSurfaceGetCapabilities : function(surface: TWGPUSurface; adapter: TWGPUAdapter; capabilities: PWGPUSurfaceCapabilities): TWGPUStatus; cdecl;
   wgpuSurfaceGetCurrentTexture : procedure(surface: TWGPUSurface; surfaceTexture: PWGPUSurfaceTexture); cdecl;
   wgpuSurfacePresent : procedure(surface: TWGPUSurface); cdecl;
   wgpuSurfaceSetLabel : procedure(surface: TWGPUSurface; &label: TWGPUStringView); cdecl;
   wgpuSurfaceUnconfigure : procedure(surface: TWGPUSurface); cdecl;
   wgpuSurfaceAddRef : procedure(surface: TWGPUSurface); cdecl;
   wgpuSurfaceRelease : procedure(surface: TWGPUSurface); cdecl;
   wgpuTextureCreateErrorView : function(texture: TWGPUTexture; const descriptor: PWGPUTextureViewDescriptor): TWGPUTextureView; cdecl;
   wgpuTextureCreateView : function(texture: TWGPUTexture; const descriptor: PWGPUTextureViewDescriptor): TWGPUTextureView; cdecl;
   wgpuTextureDestroy : procedure(texture: TWGPUTexture); cdecl;
   wgpuTextureGetDepthOrArrayLayers : function(texture: TWGPUTexture): UInt32; cdecl;
   wgpuTextureGetDimension : function(texture: TWGPUTexture): TWGPUTextureDimension; cdecl;
   wgpuTextureGetFormat : function(texture: TWGPUTexture): TWGPUTextureFormat; cdecl;
   wgpuTextureGetHeight : function(texture: TWGPUTexture): UInt32; cdecl;
   wgpuTextureGetMipLevelCount : function(texture: TWGPUTexture): UInt32; cdecl;
   wgpuTextureGetSampleCount : function(texture: TWGPUTexture): UInt32; cdecl;
   wgpuTextureGetUsage : function(texture: TWGPUTexture): TWGPUTextureUsage; cdecl;
   wgpuTextureGetWidth : function(texture: TWGPUTexture): UInt32; cdecl;
   wgpuTextureSetLabel : procedure(texture: TWGPUTexture; &label: TWGPUStringView); cdecl;
   wgpuTextureAddRef : procedure(texture: TWGPUTexture); cdecl;
   wgpuTextureRelease : procedure(texture: TWGPUTexture); cdecl;
   wgpuTextureViewSetLabel : procedure(textureView: TWGPUTextureView; &label: TWGPUStringView); cdecl;
   wgpuTextureViewAddRef : procedure(textureView: TWGPUTextureView); cdecl;
   wgpuTextureViewRelease : procedure(textureView: TWGPUTextureView); cdecl;

procedure Load_webgpu_Library(const dllPathName : String);

implementation

var vLib : HMODULE;

procedure Load_webgpu_Library(const dllPathName : String);
begin
   if vLib <> 0 then Exit;
   vLib := LoadLibraryW(PChar(dllPathName));
   if vLib = 0 then RaiseLastOSError;

   wgpuAdapterInfoFreeMembers := GetProcAddress(vLib, 'wgpuAdapterInfoFreeMembers');
   wgpuAdapterPropertiesMemoryHeapsFreeMembers := GetProcAddress(vLib, 'wgpuAdapterPropertiesMemoryHeapsFreeMembers');
   wgpuAdapterPropertiesSubgroupMatrixConfigsFreeMembers := GetProcAddress(vLib, 'wgpuAdapterPropertiesSubgroupMatrixConfigsFreeMembers');
   wgpuCreateInstance := GetProcAddress(vLib, 'wgpuCreateInstance');
   wgpuDawnDrmFormatCapabilitiesFreeMembers := GetProcAddress(vLib, 'wgpuDawnDrmFormatCapabilitiesFreeMembers');
   wgpuGetInstanceCapabilities := GetProcAddress(vLib, 'wgpuGetInstanceCapabilities');
   wgpuGetProcAddress := GetProcAddress(vLib, 'wgpuGetProcAddress');
   wgpuSharedBufferMemoryEndAccessStateFreeMembers := GetProcAddress(vLib, 'wgpuSharedBufferMemoryEndAccessStateFreeMembers');
   wgpuSharedTextureMemoryEndAccessStateFreeMembers := GetProcAddress(vLib, 'wgpuSharedTextureMemoryEndAccessStateFreeMembers');
   wgpuSupportedWGSLLanguageFeaturesFreeMembers := GetProcAddress(vLib, 'wgpuSupportedWGSLLanguageFeaturesFreeMembers');
   wgpuSupportedFeaturesFreeMembers := GetProcAddress(vLib, 'wgpuSupportedFeaturesFreeMembers');
   wgpuSurfaceCapabilitiesFreeMembers := GetProcAddress(vLib, 'wgpuSurfaceCapabilitiesFreeMembers');
   wgpuAdapterCreateDevice := GetProcAddress(vLib, 'wgpuAdapterCreateDevice');
   wgpuAdapterGetFeatures := GetProcAddress(vLib, 'wgpuAdapterGetFeatures');
   wgpuAdapterGetFormatCapabilities := GetProcAddress(vLib, 'wgpuAdapterGetFormatCapabilities');
   wgpuAdapterGetInfo := GetProcAddress(vLib, 'wgpuAdapterGetInfo');
   wgpuAdapterGetInstance := GetProcAddress(vLib, 'wgpuAdapterGetInstance');
   wgpuAdapterGetLimits := GetProcAddress(vLib, 'wgpuAdapterGetLimits');
   wgpuAdapterHasFeature := GetProcAddress(vLib, 'wgpuAdapterHasFeature');
   wgpuAdapterRequestDevice := GetProcAddress(vLib, 'wgpuAdapterRequestDevice');
   wgpuAdapterAddRef := GetProcAddress(vLib, 'wgpuAdapterAddRef');
   wgpuAdapterRelease := GetProcAddress(vLib, 'wgpuAdapterRelease');
   wgpuBindGroupSetLabel := GetProcAddress(vLib, 'wgpuBindGroupSetLabel');
   wgpuBindGroupAddRef := GetProcAddress(vLib, 'wgpuBindGroupAddRef');
   wgpuBindGroupRelease := GetProcAddress(vLib, 'wgpuBindGroupRelease');
   wgpuBindGroupLayoutSetLabel := GetProcAddress(vLib, 'wgpuBindGroupLayoutSetLabel');
   wgpuBindGroupLayoutAddRef := GetProcAddress(vLib, 'wgpuBindGroupLayoutAddRef');
   wgpuBindGroupLayoutRelease := GetProcAddress(vLib, 'wgpuBindGroupLayoutRelease');
   wgpuBufferDestroy := GetProcAddress(vLib, 'wgpuBufferDestroy');
   wgpuBufferGetConstMappedRange := GetProcAddress(vLib, 'wgpuBufferGetConstMappedRange');
   wgpuBufferGetMapState := GetProcAddress(vLib, 'wgpuBufferGetMapState');
   wgpuBufferGetMappedRange := GetProcAddress(vLib, 'wgpuBufferGetMappedRange');
   wgpuBufferGetSize := GetProcAddress(vLib, 'wgpuBufferGetSize');
   wgpuBufferGetUsage := GetProcAddress(vLib, 'wgpuBufferGetUsage');
   wgpuBufferMapAsync := GetProcAddress(vLib, 'wgpuBufferMapAsync');
   wgpuBufferReadMappedRange := GetProcAddress(vLib, 'wgpuBufferReadMappedRange');
   wgpuBufferSetLabel := GetProcAddress(vLib, 'wgpuBufferSetLabel');
   wgpuBufferUnmap := GetProcAddress(vLib, 'wgpuBufferUnmap');
   wgpuBufferWriteMappedRange := GetProcAddress(vLib, 'wgpuBufferWriteMappedRange');
   wgpuBufferAddRef := GetProcAddress(vLib, 'wgpuBufferAddRef');
   wgpuBufferRelease := GetProcAddress(vLib, 'wgpuBufferRelease');
   wgpuCommandBufferSetLabel := GetProcAddress(vLib, 'wgpuCommandBufferSetLabel');
   wgpuCommandBufferAddRef := GetProcAddress(vLib, 'wgpuCommandBufferAddRef');
   wgpuCommandBufferRelease := GetProcAddress(vLib, 'wgpuCommandBufferRelease');
   wgpuCommandEncoderBeginComputePass := GetProcAddress(vLib, 'wgpuCommandEncoderBeginComputePass');
   wgpuCommandEncoderBeginRenderPass := GetProcAddress(vLib, 'wgpuCommandEncoderBeginRenderPass');
   wgpuCommandEncoderClearBuffer := GetProcAddress(vLib, 'wgpuCommandEncoderClearBuffer');
   wgpuCommandEncoderCopyBufferToBuffer := GetProcAddress(vLib, 'wgpuCommandEncoderCopyBufferToBuffer');
   wgpuCommandEncoderCopyBufferToTexture := GetProcAddress(vLib, 'wgpuCommandEncoderCopyBufferToTexture');
   wgpuCommandEncoderCopyTextureToBuffer := GetProcAddress(vLib, 'wgpuCommandEncoderCopyTextureToBuffer');
   wgpuCommandEncoderCopyTextureToTexture := GetProcAddress(vLib, 'wgpuCommandEncoderCopyTextureToTexture');
   wgpuCommandEncoderFinish := GetProcAddress(vLib, 'wgpuCommandEncoderFinish');
   wgpuCommandEncoderInjectValidationError := GetProcAddress(vLib, 'wgpuCommandEncoderInjectValidationError');
   wgpuCommandEncoderInsertDebugMarker := GetProcAddress(vLib, 'wgpuCommandEncoderInsertDebugMarker');
   wgpuCommandEncoderPopDebugGroup := GetProcAddress(vLib, 'wgpuCommandEncoderPopDebugGroup');
   wgpuCommandEncoderPushDebugGroup := GetProcAddress(vLib, 'wgpuCommandEncoderPushDebugGroup');
   wgpuCommandEncoderResolveQuerySet := GetProcAddress(vLib, 'wgpuCommandEncoderResolveQuerySet');
   wgpuCommandEncoderSetLabel := GetProcAddress(vLib, 'wgpuCommandEncoderSetLabel');
   wgpuCommandEncoderWriteBuffer := GetProcAddress(vLib, 'wgpuCommandEncoderWriteBuffer');
   wgpuCommandEncoderWriteTimestamp := GetProcAddress(vLib, 'wgpuCommandEncoderWriteTimestamp');
   wgpuCommandEncoderAddRef := GetProcAddress(vLib, 'wgpuCommandEncoderAddRef');
   wgpuCommandEncoderRelease := GetProcAddress(vLib, 'wgpuCommandEncoderRelease');
   wgpuComputePassEncoderDispatchWorkgroups := GetProcAddress(vLib, 'wgpuComputePassEncoderDispatchWorkgroups');
   wgpuComputePassEncoderDispatchWorkgroupsIndirect := GetProcAddress(vLib, 'wgpuComputePassEncoderDispatchWorkgroupsIndirect');
   wgpuComputePassEncoderEnd := GetProcAddress(vLib, 'wgpuComputePassEncoderEnd');
   wgpuComputePassEncoderInsertDebugMarker := GetProcAddress(vLib, 'wgpuComputePassEncoderInsertDebugMarker');
   wgpuComputePassEncoderPopDebugGroup := GetProcAddress(vLib, 'wgpuComputePassEncoderPopDebugGroup');
   wgpuComputePassEncoderPushDebugGroup := GetProcAddress(vLib, 'wgpuComputePassEncoderPushDebugGroup');
   wgpuComputePassEncoderSetBindGroup := GetProcAddress(vLib, 'wgpuComputePassEncoderSetBindGroup');
   wgpuComputePassEncoderSetImmediateData := GetProcAddress(vLib, 'wgpuComputePassEncoderSetImmediateData');
   wgpuComputePassEncoderSetLabel := GetProcAddress(vLib, 'wgpuComputePassEncoderSetLabel');
   wgpuComputePassEncoderSetPipeline := GetProcAddress(vLib, 'wgpuComputePassEncoderSetPipeline');
   wgpuComputePassEncoderWriteTimestamp := GetProcAddress(vLib, 'wgpuComputePassEncoderWriteTimestamp');
   wgpuComputePassEncoderAddRef := GetProcAddress(vLib, 'wgpuComputePassEncoderAddRef');
   wgpuComputePassEncoderRelease := GetProcAddress(vLib, 'wgpuComputePassEncoderRelease');
   wgpuComputePipelineGetBindGroupLayout := GetProcAddress(vLib, 'wgpuComputePipelineGetBindGroupLayout');
   wgpuComputePipelineSetLabel := GetProcAddress(vLib, 'wgpuComputePipelineSetLabel');
   wgpuComputePipelineAddRef := GetProcAddress(vLib, 'wgpuComputePipelineAddRef');
   wgpuComputePipelineRelease := GetProcAddress(vLib, 'wgpuComputePipelineRelease');
   wgpuDeviceCreateBindGroup := GetProcAddress(vLib, 'wgpuDeviceCreateBindGroup');
   wgpuDeviceCreateBindGroupLayout := GetProcAddress(vLib, 'wgpuDeviceCreateBindGroupLayout');
   wgpuDeviceCreateBuffer := GetProcAddress(vLib, 'wgpuDeviceCreateBuffer');
   wgpuDeviceCreateCommandEncoder := GetProcAddress(vLib, 'wgpuDeviceCreateCommandEncoder');
   wgpuDeviceCreateComputePipeline := GetProcAddress(vLib, 'wgpuDeviceCreateComputePipeline');
   wgpuDeviceCreateComputePipelineAsync := GetProcAddress(vLib, 'wgpuDeviceCreateComputePipelineAsync');
   wgpuDeviceCreateErrorBuffer := GetProcAddress(vLib, 'wgpuDeviceCreateErrorBuffer');
   wgpuDeviceCreateErrorExternalTexture := GetProcAddress(vLib, 'wgpuDeviceCreateErrorExternalTexture');
   wgpuDeviceCreateErrorShaderModule := GetProcAddress(vLib, 'wgpuDeviceCreateErrorShaderModule');
   wgpuDeviceCreateErrorTexture := GetProcAddress(vLib, 'wgpuDeviceCreateErrorTexture');
   wgpuDeviceCreateExternalTexture := GetProcAddress(vLib, 'wgpuDeviceCreateExternalTexture');
   wgpuDeviceCreatePipelineLayout := GetProcAddress(vLib, 'wgpuDeviceCreatePipelineLayout');
   wgpuDeviceCreateQuerySet := GetProcAddress(vLib, 'wgpuDeviceCreateQuerySet');
   wgpuDeviceCreateRenderBundleEncoder := GetProcAddress(vLib, 'wgpuDeviceCreateRenderBundleEncoder');
   wgpuDeviceCreateRenderPipeline := GetProcAddress(vLib, 'wgpuDeviceCreateRenderPipeline');
   wgpuDeviceCreateRenderPipelineAsync := GetProcAddress(vLib, 'wgpuDeviceCreateRenderPipelineAsync');
   wgpuDeviceCreateSampler := GetProcAddress(vLib, 'wgpuDeviceCreateSampler');
   wgpuDeviceCreateShaderModule := GetProcAddress(vLib, 'wgpuDeviceCreateShaderModule');
   wgpuDeviceCreateTexture := GetProcAddress(vLib, 'wgpuDeviceCreateTexture');
   wgpuDeviceDestroy := GetProcAddress(vLib, 'wgpuDeviceDestroy');
   wgpuDeviceForceLoss := GetProcAddress(vLib, 'wgpuDeviceForceLoss');
   wgpuDeviceGetAHardwareBufferProperties := GetProcAddress(vLib, 'wgpuDeviceGetAHardwareBufferProperties');
   wgpuDeviceGetAdapter := GetProcAddress(vLib, 'wgpuDeviceGetAdapter');
   wgpuDeviceGetAdapterInfo := GetProcAddress(vLib, 'wgpuDeviceGetAdapterInfo');
   wgpuDeviceGetFeatures := GetProcAddress(vLib, 'wgpuDeviceGetFeatures');
   wgpuDeviceGetLimits := GetProcAddress(vLib, 'wgpuDeviceGetLimits');
   wgpuDeviceGetLostFuture := GetProcAddress(vLib, 'wgpuDeviceGetLostFuture');
   wgpuDeviceGetQueue := GetProcAddress(vLib, 'wgpuDeviceGetQueue');
   wgpuDeviceHasFeature := GetProcAddress(vLib, 'wgpuDeviceHasFeature');
   wgpuDeviceImportSharedBufferMemory := GetProcAddress(vLib, 'wgpuDeviceImportSharedBufferMemory');
   wgpuDeviceImportSharedFence := GetProcAddress(vLib, 'wgpuDeviceImportSharedFence');
   wgpuDeviceImportSharedTextureMemory := GetProcAddress(vLib, 'wgpuDeviceImportSharedTextureMemory');
   wgpuDeviceInjectError := GetProcAddress(vLib, 'wgpuDeviceInjectError');
   wgpuDevicePopErrorScope := GetProcAddress(vLib, 'wgpuDevicePopErrorScope');
   wgpuDevicePushErrorScope := GetProcAddress(vLib, 'wgpuDevicePushErrorScope');
   wgpuDeviceSetLabel := GetProcAddress(vLib, 'wgpuDeviceSetLabel');
   wgpuDeviceSetLoggingCallback := GetProcAddress(vLib, 'wgpuDeviceSetLoggingCallback');
   wgpuDeviceTick := GetProcAddress(vLib, 'wgpuDeviceTick');
   wgpuDeviceValidateTextureDescriptor := GetProcAddress(vLib, 'wgpuDeviceValidateTextureDescriptor');
   wgpuDeviceAddRef := GetProcAddress(vLib, 'wgpuDeviceAddRef');
   wgpuDeviceRelease := GetProcAddress(vLib, 'wgpuDeviceRelease');
   wgpuExternalTextureDestroy := GetProcAddress(vLib, 'wgpuExternalTextureDestroy');
   wgpuExternalTextureExpire := GetProcAddress(vLib, 'wgpuExternalTextureExpire');
   wgpuExternalTextureRefresh := GetProcAddress(vLib, 'wgpuExternalTextureRefresh');
   wgpuExternalTextureSetLabel := GetProcAddress(vLib, 'wgpuExternalTextureSetLabel');
   wgpuExternalTextureAddRef := GetProcAddress(vLib, 'wgpuExternalTextureAddRef');
   wgpuExternalTextureRelease := GetProcAddress(vLib, 'wgpuExternalTextureRelease');
   wgpuInstanceCreateSurface := GetProcAddress(vLib, 'wgpuInstanceCreateSurface');
   wgpuInstanceGetWGSLLanguageFeatures := GetProcAddress(vLib, 'wgpuInstanceGetWGSLLanguageFeatures');
   wgpuInstanceHasWGSLLanguageFeature := GetProcAddress(vLib, 'wgpuInstanceHasWGSLLanguageFeature');
   wgpuInstanceProcessEvents := GetProcAddress(vLib, 'wgpuInstanceProcessEvents');
   wgpuInstanceRequestAdapter := GetProcAddress(vLib, 'wgpuInstanceRequestAdapter');
   wgpuInstanceWaitAny := GetProcAddress(vLib, 'wgpuInstanceWaitAny');
   wgpuInstanceAddRef := GetProcAddress(vLib, 'wgpuInstanceAddRef');
   wgpuInstanceRelease := GetProcAddress(vLib, 'wgpuInstanceRelease');
   wgpuPipelineLayoutSetLabel := GetProcAddress(vLib, 'wgpuPipelineLayoutSetLabel');
   wgpuPipelineLayoutAddRef := GetProcAddress(vLib, 'wgpuPipelineLayoutAddRef');
   wgpuPipelineLayoutRelease := GetProcAddress(vLib, 'wgpuPipelineLayoutRelease');
   wgpuQuerySetDestroy := GetProcAddress(vLib, 'wgpuQuerySetDestroy');
   wgpuQuerySetGetCount := GetProcAddress(vLib, 'wgpuQuerySetGetCount');
   wgpuQuerySetGetType := GetProcAddress(vLib, 'wgpuQuerySetGetType');
   wgpuQuerySetSetLabel := GetProcAddress(vLib, 'wgpuQuerySetSetLabel');
   wgpuQuerySetAddRef := GetProcAddress(vLib, 'wgpuQuerySetAddRef');
   wgpuQuerySetRelease := GetProcAddress(vLib, 'wgpuQuerySetRelease');
   wgpuQueueCopyExternalTextureForBrowser := GetProcAddress(vLib, 'wgpuQueueCopyExternalTextureForBrowser');
   wgpuQueueCopyTextureForBrowser := GetProcAddress(vLib, 'wgpuQueueCopyTextureForBrowser');
   wgpuQueueOnSubmittedWorkDone := GetProcAddress(vLib, 'wgpuQueueOnSubmittedWorkDone');
   wgpuQueueSetLabel := GetProcAddress(vLib, 'wgpuQueueSetLabel');
   wgpuQueueSubmit := GetProcAddress(vLib, 'wgpuQueueSubmit');
   wgpuQueueWriteBuffer := GetProcAddress(vLib, 'wgpuQueueWriteBuffer');
   wgpuQueueWriteTexture := GetProcAddress(vLib, 'wgpuQueueWriteTexture');
   wgpuQueueAddRef := GetProcAddress(vLib, 'wgpuQueueAddRef');
   wgpuQueueRelease := GetProcAddress(vLib, 'wgpuQueueRelease');
   wgpuRenderBundleSetLabel := GetProcAddress(vLib, 'wgpuRenderBundleSetLabel');
   wgpuRenderBundleAddRef := GetProcAddress(vLib, 'wgpuRenderBundleAddRef');
   wgpuRenderBundleRelease := GetProcAddress(vLib, 'wgpuRenderBundleRelease');
   wgpuRenderBundleEncoderDraw := GetProcAddress(vLib, 'wgpuRenderBundleEncoderDraw');
   wgpuRenderBundleEncoderDrawIndexed := GetProcAddress(vLib, 'wgpuRenderBundleEncoderDrawIndexed');
   wgpuRenderBundleEncoderDrawIndexedIndirect := GetProcAddress(vLib, 'wgpuRenderBundleEncoderDrawIndexedIndirect');
   wgpuRenderBundleEncoderDrawIndirect := GetProcAddress(vLib, 'wgpuRenderBundleEncoderDrawIndirect');
   wgpuRenderBundleEncoderFinish := GetProcAddress(vLib, 'wgpuRenderBundleEncoderFinish');
   wgpuRenderBundleEncoderInsertDebugMarker := GetProcAddress(vLib, 'wgpuRenderBundleEncoderInsertDebugMarker');
   wgpuRenderBundleEncoderPopDebugGroup := GetProcAddress(vLib, 'wgpuRenderBundleEncoderPopDebugGroup');
   wgpuRenderBundleEncoderPushDebugGroup := GetProcAddress(vLib, 'wgpuRenderBundleEncoderPushDebugGroup');
   wgpuRenderBundleEncoderSetBindGroup := GetProcAddress(vLib, 'wgpuRenderBundleEncoderSetBindGroup');
   wgpuRenderBundleEncoderSetImmediateData := GetProcAddress(vLib, 'wgpuRenderBundleEncoderSetImmediateData');
   wgpuRenderBundleEncoderSetIndexBuffer := GetProcAddress(vLib, 'wgpuRenderBundleEncoderSetIndexBuffer');
   wgpuRenderBundleEncoderSetLabel := GetProcAddress(vLib, 'wgpuRenderBundleEncoderSetLabel');
   wgpuRenderBundleEncoderSetPipeline := GetProcAddress(vLib, 'wgpuRenderBundleEncoderSetPipeline');
   wgpuRenderBundleEncoderSetVertexBuffer := GetProcAddress(vLib, 'wgpuRenderBundleEncoderSetVertexBuffer');
   wgpuRenderBundleEncoderAddRef := GetProcAddress(vLib, 'wgpuRenderBundleEncoderAddRef');
   wgpuRenderBundleEncoderRelease := GetProcAddress(vLib, 'wgpuRenderBundleEncoderRelease');
   wgpuRenderPassEncoderBeginOcclusionQuery := GetProcAddress(vLib, 'wgpuRenderPassEncoderBeginOcclusionQuery');
   wgpuRenderPassEncoderDraw := GetProcAddress(vLib, 'wgpuRenderPassEncoderDraw');
   wgpuRenderPassEncoderDrawIndexed := GetProcAddress(vLib, 'wgpuRenderPassEncoderDrawIndexed');
   wgpuRenderPassEncoderDrawIndexedIndirect := GetProcAddress(vLib, 'wgpuRenderPassEncoderDrawIndexedIndirect');
   wgpuRenderPassEncoderDrawIndirect := GetProcAddress(vLib, 'wgpuRenderPassEncoderDrawIndirect');
   wgpuRenderPassEncoderEnd := GetProcAddress(vLib, 'wgpuRenderPassEncoderEnd');
   wgpuRenderPassEncoderEndOcclusionQuery := GetProcAddress(vLib, 'wgpuRenderPassEncoderEndOcclusionQuery');
   wgpuRenderPassEncoderExecuteBundles := GetProcAddress(vLib, 'wgpuRenderPassEncoderExecuteBundles');
   wgpuRenderPassEncoderInsertDebugMarker := GetProcAddress(vLib, 'wgpuRenderPassEncoderInsertDebugMarker');
   wgpuRenderPassEncoderMultiDrawIndexedIndirect := GetProcAddress(vLib, 'wgpuRenderPassEncoderMultiDrawIndexedIndirect');
   wgpuRenderPassEncoderMultiDrawIndirect := GetProcAddress(vLib, 'wgpuRenderPassEncoderMultiDrawIndirect');
   wgpuRenderPassEncoderPixelLocalStorageBarrier := GetProcAddress(vLib, 'wgpuRenderPassEncoderPixelLocalStorageBarrier');
   wgpuRenderPassEncoderPopDebugGroup := GetProcAddress(vLib, 'wgpuRenderPassEncoderPopDebugGroup');
   wgpuRenderPassEncoderPushDebugGroup := GetProcAddress(vLib, 'wgpuRenderPassEncoderPushDebugGroup');
   wgpuRenderPassEncoderSetBindGroup := GetProcAddress(vLib, 'wgpuRenderPassEncoderSetBindGroup');
   wgpuRenderPassEncoderSetBlendConstant := GetProcAddress(vLib, 'wgpuRenderPassEncoderSetBlendConstant');
   wgpuRenderPassEncoderSetImmediateData := GetProcAddress(vLib, 'wgpuRenderPassEncoderSetImmediateData');
   wgpuRenderPassEncoderSetIndexBuffer := GetProcAddress(vLib, 'wgpuRenderPassEncoderSetIndexBuffer');
   wgpuRenderPassEncoderSetLabel := GetProcAddress(vLib, 'wgpuRenderPassEncoderSetLabel');
   wgpuRenderPassEncoderSetPipeline := GetProcAddress(vLib, 'wgpuRenderPassEncoderSetPipeline');
   wgpuRenderPassEncoderSetScissorRect := GetProcAddress(vLib, 'wgpuRenderPassEncoderSetScissorRect');
   wgpuRenderPassEncoderSetStencilReference := GetProcAddress(vLib, 'wgpuRenderPassEncoderSetStencilReference');
   wgpuRenderPassEncoderSetVertexBuffer := GetProcAddress(vLib, 'wgpuRenderPassEncoderSetVertexBuffer');
   wgpuRenderPassEncoderSetViewport := GetProcAddress(vLib, 'wgpuRenderPassEncoderSetViewport');
   wgpuRenderPassEncoderWriteTimestamp := GetProcAddress(vLib, 'wgpuRenderPassEncoderWriteTimestamp');
   wgpuRenderPassEncoderAddRef := GetProcAddress(vLib, 'wgpuRenderPassEncoderAddRef');
   wgpuRenderPassEncoderRelease := GetProcAddress(vLib, 'wgpuRenderPassEncoderRelease');
   wgpuRenderPipelineGetBindGroupLayout := GetProcAddress(vLib, 'wgpuRenderPipelineGetBindGroupLayout');
   wgpuRenderPipelineSetLabel := GetProcAddress(vLib, 'wgpuRenderPipelineSetLabel');
   wgpuRenderPipelineAddRef := GetProcAddress(vLib, 'wgpuRenderPipelineAddRef');
   wgpuRenderPipelineRelease := GetProcAddress(vLib, 'wgpuRenderPipelineRelease');
   wgpuSamplerSetLabel := GetProcAddress(vLib, 'wgpuSamplerSetLabel');
   wgpuSamplerAddRef := GetProcAddress(vLib, 'wgpuSamplerAddRef');
   wgpuSamplerRelease := GetProcAddress(vLib, 'wgpuSamplerRelease');
   wgpuShaderModuleGetCompilationInfo := GetProcAddress(vLib, 'wgpuShaderModuleGetCompilationInfo');
   wgpuShaderModuleSetLabel := GetProcAddress(vLib, 'wgpuShaderModuleSetLabel');
   wgpuShaderModuleAddRef := GetProcAddress(vLib, 'wgpuShaderModuleAddRef');
   wgpuShaderModuleRelease := GetProcAddress(vLib, 'wgpuShaderModuleRelease');
   wgpuSharedBufferMemoryBeginAccess := GetProcAddress(vLib, 'wgpuSharedBufferMemoryBeginAccess');
   wgpuSharedBufferMemoryCreateBuffer := GetProcAddress(vLib, 'wgpuSharedBufferMemoryCreateBuffer');
   wgpuSharedBufferMemoryEndAccess := GetProcAddress(vLib, 'wgpuSharedBufferMemoryEndAccess');
   wgpuSharedBufferMemoryGetProperties := GetProcAddress(vLib, 'wgpuSharedBufferMemoryGetProperties');
   wgpuSharedBufferMemoryIsDeviceLost := GetProcAddress(vLib, 'wgpuSharedBufferMemoryIsDeviceLost');
   wgpuSharedBufferMemorySetLabel := GetProcAddress(vLib, 'wgpuSharedBufferMemorySetLabel');
   wgpuSharedBufferMemoryAddRef := GetProcAddress(vLib, 'wgpuSharedBufferMemoryAddRef');
   wgpuSharedBufferMemoryRelease := GetProcAddress(vLib, 'wgpuSharedBufferMemoryRelease');
   wgpuSharedFenceExportInfo := GetProcAddress(vLib, 'wgpuSharedFenceExportInfo');
   wgpuSharedFenceAddRef := GetProcAddress(vLib, 'wgpuSharedFenceAddRef');
   wgpuSharedFenceRelease := GetProcAddress(vLib, 'wgpuSharedFenceRelease');
   wgpuSharedTextureMemoryBeginAccess := GetProcAddress(vLib, 'wgpuSharedTextureMemoryBeginAccess');
   wgpuSharedTextureMemoryCreateTexture := GetProcAddress(vLib, 'wgpuSharedTextureMemoryCreateTexture');
   wgpuSharedTextureMemoryEndAccess := GetProcAddress(vLib, 'wgpuSharedTextureMemoryEndAccess');
   wgpuSharedTextureMemoryGetProperties := GetProcAddress(vLib, 'wgpuSharedTextureMemoryGetProperties');
   wgpuSharedTextureMemoryIsDeviceLost := GetProcAddress(vLib, 'wgpuSharedTextureMemoryIsDeviceLost');
   wgpuSharedTextureMemorySetLabel := GetProcAddress(vLib, 'wgpuSharedTextureMemorySetLabel');
   wgpuSharedTextureMemoryAddRef := GetProcAddress(vLib, 'wgpuSharedTextureMemoryAddRef');
   wgpuSharedTextureMemoryRelease := GetProcAddress(vLib, 'wgpuSharedTextureMemoryRelease');
   wgpuSurfaceConfigure := GetProcAddress(vLib, 'wgpuSurfaceConfigure');
   wgpuSurfaceGetCapabilities := GetProcAddress(vLib, 'wgpuSurfaceGetCapabilities');
   wgpuSurfaceGetCurrentTexture := GetProcAddress(vLib, 'wgpuSurfaceGetCurrentTexture');
   wgpuSurfacePresent := GetProcAddress(vLib, 'wgpuSurfacePresent');
   wgpuSurfaceSetLabel := GetProcAddress(vLib, 'wgpuSurfaceSetLabel');
   wgpuSurfaceUnconfigure := GetProcAddress(vLib, 'wgpuSurfaceUnconfigure');
   wgpuSurfaceAddRef := GetProcAddress(vLib, 'wgpuSurfaceAddRef');
   wgpuSurfaceRelease := GetProcAddress(vLib, 'wgpuSurfaceRelease');
   wgpuTextureCreateErrorView := GetProcAddress(vLib, 'wgpuTextureCreateErrorView');
   wgpuTextureCreateView := GetProcAddress(vLib, 'wgpuTextureCreateView');
   wgpuTextureDestroy := GetProcAddress(vLib, 'wgpuTextureDestroy');
   wgpuTextureGetDepthOrArrayLayers := GetProcAddress(vLib, 'wgpuTextureGetDepthOrArrayLayers');
   wgpuTextureGetDimension := GetProcAddress(vLib, 'wgpuTextureGetDimension');
   wgpuTextureGetFormat := GetProcAddress(vLib, 'wgpuTextureGetFormat');
   wgpuTextureGetHeight := GetProcAddress(vLib, 'wgpuTextureGetHeight');
   wgpuTextureGetMipLevelCount := GetProcAddress(vLib, 'wgpuTextureGetMipLevelCount');
   wgpuTextureGetSampleCount := GetProcAddress(vLib, 'wgpuTextureGetSampleCount');
   wgpuTextureGetUsage := GetProcAddress(vLib, 'wgpuTextureGetUsage');
   wgpuTextureGetWidth := GetProcAddress(vLib, 'wgpuTextureGetWidth');
   wgpuTextureSetLabel := GetProcAddress(vLib, 'wgpuTextureSetLabel');
   wgpuTextureAddRef := GetProcAddress(vLib, 'wgpuTextureAddRef');
   wgpuTextureRelease := GetProcAddress(vLib, 'wgpuTextureRelease');
   wgpuTextureViewSetLabel := GetProcAddress(vLib, 'wgpuTextureViewSetLabel');
   wgpuTextureViewAddRef := GetProcAddress(vLib, 'wgpuTextureViewAddRef');
   wgpuTextureViewRelease := GetProcAddress(vLib, 'wgpuTextureViewRelease');
end;

class operator TWGPUStringView.Implicit(const s : UTF8String) : TWGPUStringView;
begin
   Result.data := Pointer(s);
   Result.length := System.Length(s);
end;

class operator TWGPUStringView.Implicit(const view : TWGPUStringView) : UTF8String;
begin
   SetString(Result, view.data, view.length);
end;

end.